/*
 * Copyright [2013-2021], Alibaba Group Holding Limited
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: polarx_exec_plan.proto

package com.mysql.cj.x.protobuf;

public final class PolarxExecPlan {
  private PolarxExecPlan() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  public interface NewSessionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Polarx.ExecPlan.NewSession)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * Protobuf type {@code Polarx.ExecPlan.NewSession}
   */
  public  static final class NewSession extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Polarx.ExecPlan.NewSession)
      NewSessionOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use NewSession.newBuilder() to construct.
    private NewSession(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private NewSession() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new NewSession();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private NewSession(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_NewSession_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_NewSession_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.mysql.cj.x.protobuf.PolarxExecPlan.NewSession.class, com.mysql.cj.x.protobuf.PolarxExecPlan.NewSession.Builder.class);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.NewSession)) {
        return super.equals(obj);
      }
      com.mysql.cj.x.protobuf.PolarxExecPlan.NewSession other = (com.mysql.cj.x.protobuf.PolarxExecPlan.NewSession) obj;

      return unknownFields.equals(other.unknownFields);
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.NewSession parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.NewSession parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.NewSession parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.NewSession parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.NewSession parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.NewSession parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.NewSession parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.NewSession parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.NewSession parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.NewSession parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.NewSession parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.NewSession parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.mysql.cj.x.protobuf.PolarxExecPlan.NewSession prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Polarx.ExecPlan.NewSession}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Polarx.ExecPlan.NewSession)
        com.mysql.cj.x.protobuf.PolarxExecPlan.NewSessionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_NewSession_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_NewSession_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.mysql.cj.x.protobuf.PolarxExecPlan.NewSession.class, com.mysql.cj.x.protobuf.PolarxExecPlan.NewSession.Builder.class);
      }

      // Construct using com.mysql.cj.x.protobuf.PolarxExecPlan.NewSession.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_NewSession_descriptor;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.NewSession getDefaultInstanceForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.NewSession.getDefaultInstance();
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.NewSession build() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.NewSession result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.NewSession buildPartial() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.NewSession result = new com.mysql.cj.x.protobuf.PolarxExecPlan.NewSession(this);
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.NewSession) {
          return mergeFrom((com.mysql.cj.x.protobuf.PolarxExecPlan.NewSession)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.mysql.cj.x.protobuf.PolarxExecPlan.NewSession other) {
        if (other == com.mysql.cj.x.protobuf.PolarxExecPlan.NewSession.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.mysql.cj.x.protobuf.PolarxExecPlan.NewSession parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.mysql.cj.x.protobuf.PolarxExecPlan.NewSession) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Polarx.ExecPlan.NewSession)
    }

    // @@protoc_insertion_point(class_scope:Polarx.ExecPlan.NewSession)
    private static final com.mysql.cj.x.protobuf.PolarxExecPlan.NewSession DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.mysql.cj.x.protobuf.PolarxExecPlan.NewSession();
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.NewSession getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<NewSession>
        PARSER = new com.google.protobuf.AbstractParser<NewSession>() {
      @java.lang.Override
      public NewSession parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new NewSession(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<NewSession> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<NewSession> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.mysql.cj.x.protobuf.PolarxExecPlan.NewSession getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CloseSessionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Polarx.ExecPlan.CloseSession)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * Protobuf type {@code Polarx.ExecPlan.CloseSession}
   */
  public  static final class CloseSession extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Polarx.ExecPlan.CloseSession)
      CloseSessionOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CloseSession.newBuilder() to construct.
    private CloseSession(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CloseSession() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new CloseSession();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private CloseSession(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_CloseSession_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_CloseSession_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.mysql.cj.x.protobuf.PolarxExecPlan.CloseSession.class, com.mysql.cj.x.protobuf.PolarxExecPlan.CloseSession.Builder.class);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.CloseSession)) {
        return super.equals(obj);
      }
      com.mysql.cj.x.protobuf.PolarxExecPlan.CloseSession other = (com.mysql.cj.x.protobuf.PolarxExecPlan.CloseSession) obj;

        return unknownFields.equals(other.unknownFields);
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.CloseSession parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.CloseSession parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.CloseSession parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.CloseSession parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.CloseSession parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.CloseSession parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.CloseSession parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.CloseSession parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.CloseSession parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.CloseSession parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.CloseSession parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.CloseSession parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.mysql.cj.x.protobuf.PolarxExecPlan.CloseSession prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Polarx.ExecPlan.CloseSession}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Polarx.ExecPlan.CloseSession)
        com.mysql.cj.x.protobuf.PolarxExecPlan.CloseSessionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_CloseSession_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_CloseSession_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.mysql.cj.x.protobuf.PolarxExecPlan.CloseSession.class, com.mysql.cj.x.protobuf.PolarxExecPlan.CloseSession.Builder.class);
      }

      // Construct using com.mysql.cj.x.protobuf.PolarxExecPlan.CloseSession.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_CloseSession_descriptor;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.CloseSession getDefaultInstanceForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.CloseSession.getDefaultInstance();
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.CloseSession build() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.CloseSession result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.CloseSession buildPartial() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.CloseSession result = new com.mysql.cj.x.protobuf.PolarxExecPlan.CloseSession(this);
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.CloseSession) {
          return mergeFrom((com.mysql.cj.x.protobuf.PolarxExecPlan.CloseSession)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.mysql.cj.x.protobuf.PolarxExecPlan.CloseSession other) {
        if (other == com.mysql.cj.x.protobuf.PolarxExecPlan.CloseSession.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.mysql.cj.x.protobuf.PolarxExecPlan.CloseSession parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.mysql.cj.x.protobuf.PolarxExecPlan.CloseSession) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Polarx.ExecPlan.CloseSession)
    }

    // @@protoc_insertion_point(class_scope:Polarx.ExecPlan.CloseSession)
    private static final com.mysql.cj.x.protobuf.PolarxExecPlan.CloseSession DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.mysql.cj.x.protobuf.PolarxExecPlan.CloseSession();
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.CloseSession getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<CloseSession>
        PARSER = new com.google.protobuf.AbstractParser<CloseSession>() {
      @java.lang.Override
      public CloseSession parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new CloseSession(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<CloseSession> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<CloseSession> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.mysql.cj.x.protobuf.PolarxExecPlan.CloseSession getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface EnumSessionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Polarx.ExecPlan.EnumSession)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * Protobuf type {@code Polarx.ExecPlan.EnumSession}
   */
  public  static final class EnumSession extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Polarx.ExecPlan.EnumSession)
      EnumSessionOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use EnumSession.newBuilder() to construct.
    private EnumSession(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private EnumSession() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new EnumSession();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private EnumSession(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_EnumSession_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_EnumSession_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.mysql.cj.x.protobuf.PolarxExecPlan.EnumSession.class, com.mysql.cj.x.protobuf.PolarxExecPlan.EnumSession.Builder.class);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.EnumSession)) {
        return super.equals(obj);
      }
      com.mysql.cj.x.protobuf.PolarxExecPlan.EnumSession other = (com.mysql.cj.x.protobuf.PolarxExecPlan.EnumSession) obj;

        return unknownFields.equals(other.unknownFields);
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.EnumSession parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.EnumSession parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.EnumSession parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.EnumSession parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.EnumSession parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.EnumSession parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.EnumSession parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.EnumSession parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.EnumSession parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.EnumSession parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.EnumSession parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.EnumSession parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.mysql.cj.x.protobuf.PolarxExecPlan.EnumSession prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Polarx.ExecPlan.EnumSession}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Polarx.ExecPlan.EnumSession)
        com.mysql.cj.x.protobuf.PolarxExecPlan.EnumSessionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_EnumSession_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_EnumSession_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.mysql.cj.x.protobuf.PolarxExecPlan.EnumSession.class, com.mysql.cj.x.protobuf.PolarxExecPlan.EnumSession.Builder.class);
      }

      // Construct using com.mysql.cj.x.protobuf.PolarxExecPlan.EnumSession.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_EnumSession_descriptor;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.EnumSession getDefaultInstanceForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.EnumSession.getDefaultInstance();
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.EnumSession build() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.EnumSession result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.EnumSession buildPartial() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.EnumSession result = new com.mysql.cj.x.protobuf.PolarxExecPlan.EnumSession(this);
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.EnumSession) {
          return mergeFrom((com.mysql.cj.x.protobuf.PolarxExecPlan.EnumSession)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.mysql.cj.x.protobuf.PolarxExecPlan.EnumSession other) {
        if (other == com.mysql.cj.x.protobuf.PolarxExecPlan.EnumSession.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.mysql.cj.x.protobuf.PolarxExecPlan.EnumSession parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.mysql.cj.x.protobuf.PolarxExecPlan.EnumSession) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Polarx.ExecPlan.EnumSession)
    }

    // @@protoc_insertion_point(class_scope:Polarx.ExecPlan.EnumSession)
    private static final com.mysql.cj.x.protobuf.PolarxExecPlan.EnumSession DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.mysql.cj.x.protobuf.PolarxExecPlan.EnumSession();
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.EnumSession getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<EnumSession>
        PARSER = new com.google.protobuf.AbstractParser<EnumSession>() {
      @java.lang.Override
      public EnumSession parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new EnumSession(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<EnumSession> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<EnumSession> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.mysql.cj.x.protobuf.PolarxExecPlan.EnumSession getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SessionInfoOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Polarx.ExecPlan.SessionInfo)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * Protobuf type {@code Polarx.ExecPlan.SessionInfo}
   */
  public  static final class SessionInfo extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Polarx.ExecPlan.SessionInfo)
      SessionInfoOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SessionInfo.newBuilder() to construct.
    private SessionInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SessionInfo() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SessionInfo();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private SessionInfo(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_SessionInfo_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_SessionInfo_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo.class, com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo.Builder.class);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo)) {
        return super.equals(obj);
      }
      com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo other = (com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo) obj;

        return unknownFields.equals(other.unknownFields);
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Polarx.ExecPlan.SessionInfo}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Polarx.ExecPlan.SessionInfo)
        com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_SessionInfo_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_SessionInfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo.class, com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo.Builder.class);
      }

      // Construct using com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_SessionInfo_descriptor;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo getDefaultInstanceForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo.getDefaultInstance();
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo build() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo buildPartial() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo result = new com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo(this);
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo) {
          return mergeFrom((com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo other) {
        if (other == com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Polarx.ExecPlan.SessionInfo)
    }

    // @@protoc_insertion_point(class_scope:Polarx.ExecPlan.SessionInfo)
    private static final com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo();
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<SessionInfo>
        PARSER = new com.google.protobuf.AbstractParser<SessionInfo>() {
      @java.lang.Override
      public SessionInfo parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new SessionInfo(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<SessionInfo> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SessionInfo> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SessionInfosOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Polarx.ExecPlan.SessionInfos)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .Polarx.ExecPlan.SessionInfo sessions = 1;</code>
     */
    java.util.List<com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo> 
        getSessionsList();
    /**
     * <code>repeated .Polarx.ExecPlan.SessionInfo sessions = 1;</code>
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo getSessions(int index);
    /**
     * <code>repeated .Polarx.ExecPlan.SessionInfo sessions = 1;</code>
     */
    int getSessionsCount();
    /**
     * <code>repeated .Polarx.ExecPlan.SessionInfo sessions = 1;</code>
     */
    java.util.List<? extends com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfoOrBuilder> 
        getSessionsOrBuilderList();
    /**
     * <code>repeated .Polarx.ExecPlan.SessionInfo sessions = 1;</code>
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfoOrBuilder getSessionsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code Polarx.ExecPlan.SessionInfos}
   */
  public  static final class SessionInfos extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Polarx.ExecPlan.SessionInfos)
      SessionInfosOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SessionInfos.newBuilder() to construct.
    private SessionInfos(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SessionInfos() {
      sessions_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SessionInfos();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private SessionInfos(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                sessions_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo>();
                mutable_bitField0_ |= 0x00000001;
              }
              sessions_.add(
                  input.readMessage(com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo.PARSER, extensionRegistry));
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          sessions_ = java.util.Collections.unmodifiableList(sessions_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_SessionInfos_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_SessionInfos_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfos.class, com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfos.Builder.class);
    }

    public static final int SESSIONS_FIELD_NUMBER = 1;
    private java.util.List<com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo> sessions_;
    /**
     * <code>repeated .Polarx.ExecPlan.SessionInfo sessions = 1;</code>
     */
    public java.util.List<com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo> getSessionsList() {
      return sessions_;
    }
    /**
     * <code>repeated .Polarx.ExecPlan.SessionInfo sessions = 1;</code>
     */
    public java.util.List<? extends com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfoOrBuilder> 
        getSessionsOrBuilderList() {
      return sessions_;
    }
    /**
     * <code>repeated .Polarx.ExecPlan.SessionInfo sessions = 1;</code>
     */
    public int getSessionsCount() {
      return sessions_.size();
    }
    /**
     * <code>repeated .Polarx.ExecPlan.SessionInfo sessions = 1;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo getSessions(int index) {
      return sessions_.get(index);
    }
    /**
     * <code>repeated .Polarx.ExecPlan.SessionInfo sessions = 1;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfoOrBuilder getSessionsOrBuilder(
        int index) {
      return sessions_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < sessions_.size(); i++) {
        output.writeMessage(1, sessions_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < sessions_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, sessions_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfos)) {
        return super.equals(obj);
      }
      com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfos other = (com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfos) obj;

      if (!getSessionsList()
          .equals(other.getSessionsList())) return false;
        return unknownFields.equals(other.unknownFields);
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getSessionsCount() > 0) {
        hash = (37 * hash) + SESSIONS_FIELD_NUMBER;
        hash = (53 * hash) + getSessionsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfos parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfos parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfos parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfos parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfos parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfos parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfos parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfos parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfos parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfos parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfos parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfos parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfos prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Polarx.ExecPlan.SessionInfos}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Polarx.ExecPlan.SessionInfos)
        com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfosOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_SessionInfos_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_SessionInfos_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfos.class, com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfos.Builder.class);
      }

      // Construct using com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfos.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getSessionsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (sessionsBuilder_ == null) {
          sessions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          sessionsBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_SessionInfos_descriptor;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfos getDefaultInstanceForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfos.getDefaultInstance();
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfos build() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfos result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfos buildPartial() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfos result = new com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfos(this);
        int from_bitField0_ = bitField0_;
        if (sessionsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            sessions_ = java.util.Collections.unmodifiableList(sessions_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.sessions_ = sessions_;
        } else {
          result.sessions_ = sessionsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfos) {
          return mergeFrom((com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfos)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfos other) {
        if (other == com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfos.getDefaultInstance()) return this;
        if (sessionsBuilder_ == null) {
          if (!other.sessions_.isEmpty()) {
            if (sessions_.isEmpty()) {
              sessions_ = other.sessions_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureSessionsIsMutable();
              sessions_.addAll(other.sessions_);
            }
            onChanged();
          }
        } else {
          if (!other.sessions_.isEmpty()) {
            if (sessionsBuilder_.isEmpty()) {
              sessionsBuilder_.dispose();
              sessionsBuilder_ = null;
              sessions_ = other.sessions_;
              bitField0_ = (bitField0_ & ~0x00000001);
              sessionsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getSessionsFieldBuilder() : null;
            } else {
              sessionsBuilder_.addAllMessages(other.sessions_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfos parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfos) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo> sessions_ =
        java.util.Collections.emptyList();
      private void ensureSessionsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          sessions_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo>(sessions_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo, com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfoOrBuilder> sessionsBuilder_;

      /**
       * <code>repeated .Polarx.ExecPlan.SessionInfo sessions = 1;</code>
       */
      public java.util.List<com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo> getSessionsList() {
        if (sessionsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(sessions_);
        } else {
          return sessionsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .Polarx.ExecPlan.SessionInfo sessions = 1;</code>
       */
      public int getSessionsCount() {
        if (sessionsBuilder_ == null) {
          return sessions_.size();
        } else {
          return sessionsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .Polarx.ExecPlan.SessionInfo sessions = 1;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo getSessions(int index) {
        if (sessionsBuilder_ == null) {
          return sessions_.get(index);
        } else {
          return sessionsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .Polarx.ExecPlan.SessionInfo sessions = 1;</code>
       */
      public Builder setSessions(
          int index, com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo value) {
        if (sessionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSessionsIsMutable();
          sessions_.set(index, value);
          onChanged();
        } else {
          sessionsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .Polarx.ExecPlan.SessionInfo sessions = 1;</code>
       */
      public Builder setSessions(
          int index, com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo.Builder builderForValue) {
        if (sessionsBuilder_ == null) {
          ensureSessionsIsMutable();
          sessions_.set(index, builderForValue.build());
          onChanged();
        } else {
          sessionsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Polarx.ExecPlan.SessionInfo sessions = 1;</code>
       */
      public Builder addSessions(com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo value) {
        if (sessionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSessionsIsMutable();
          sessions_.add(value);
          onChanged();
        } else {
          sessionsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .Polarx.ExecPlan.SessionInfo sessions = 1;</code>
       */
      public Builder addSessions(
          int index, com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo value) {
        if (sessionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSessionsIsMutable();
          sessions_.add(index, value);
          onChanged();
        } else {
          sessionsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .Polarx.ExecPlan.SessionInfo sessions = 1;</code>
       */
      public Builder addSessions(
          com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo.Builder builderForValue) {
        if (sessionsBuilder_ == null) {
          ensureSessionsIsMutable();
          sessions_.add(builderForValue.build());
          onChanged();
        } else {
          sessionsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Polarx.ExecPlan.SessionInfo sessions = 1;</code>
       */
      public Builder addSessions(
          int index, com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo.Builder builderForValue) {
        if (sessionsBuilder_ == null) {
          ensureSessionsIsMutable();
          sessions_.add(index, builderForValue.build());
          onChanged();
        } else {
          sessionsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Polarx.ExecPlan.SessionInfo sessions = 1;</code>
       */
      public Builder addAllSessions(
          java.lang.Iterable<? extends com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo> values) {
        if (sessionsBuilder_ == null) {
          ensureSessionsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, sessions_);
          onChanged();
        } else {
          sessionsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .Polarx.ExecPlan.SessionInfo sessions = 1;</code>
       */
      public Builder clearSessions() {
        if (sessionsBuilder_ == null) {
          sessions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          sessionsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .Polarx.ExecPlan.SessionInfo sessions = 1;</code>
       */
      public Builder removeSessions(int index) {
        if (sessionsBuilder_ == null) {
          ensureSessionsIsMutable();
          sessions_.remove(index);
          onChanged();
        } else {
          sessionsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .Polarx.ExecPlan.SessionInfo sessions = 1;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo.Builder getSessionsBuilder(
          int index) {
        return getSessionsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .Polarx.ExecPlan.SessionInfo sessions = 1;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfoOrBuilder getSessionsOrBuilder(
          int index) {
        if (sessionsBuilder_ == null) {
          return sessions_.get(index);  } else {
          return sessionsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .Polarx.ExecPlan.SessionInfo sessions = 1;</code>
       */
      public java.util.List<? extends com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfoOrBuilder> 
           getSessionsOrBuilderList() {
        if (sessionsBuilder_ != null) {
          return sessionsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(sessions_);
        }
      }
      /**
       * <code>repeated .Polarx.ExecPlan.SessionInfo sessions = 1;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo.Builder addSessionsBuilder() {
        return getSessionsFieldBuilder().addBuilder(
            com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo.getDefaultInstance());
      }
      /**
       * <code>repeated .Polarx.ExecPlan.SessionInfo sessions = 1;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo.Builder addSessionsBuilder(
          int index) {
        return getSessionsFieldBuilder().addBuilder(
            index, com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo.getDefaultInstance());
      }
      /**
       * <code>repeated .Polarx.ExecPlan.SessionInfo sessions = 1;</code>
       */
      public java.util.List<com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo.Builder> 
           getSessionsBuilderList() {
        return getSessionsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo, com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfoOrBuilder> 
          getSessionsFieldBuilder() {
        if (sessionsBuilder_ == null) {
          sessionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo, com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfo.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfoOrBuilder>(
                  sessions_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          sessions_ = null;
        }
        return sessionsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Polarx.ExecPlan.SessionInfos)
    }

    // @@protoc_insertion_point(class_scope:Polarx.ExecPlan.SessionInfos)
    private static final com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfos DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfos();
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfos getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<SessionInfos>
        PARSER = new com.google.protobuf.AbstractParser<SessionInfos>() {
      @java.lang.Override
      public SessionInfos parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new SessionInfos(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<SessionInfos> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SessionInfos> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.mysql.cj.x.protobuf.PolarxExecPlan.SessionInfos getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TableInfoOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Polarx.ExecPlan.TableInfo)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Multi-version?
     * </pre>
     *
     * <code>optional int64 version = 1;</code>
     * @return Whether the version field is set.
     */
    boolean hasVersion();
    /**
     * <pre>
     * Multi-version?
     * </pre>
     *
     * <code>optional int64 version = 1;</code>
     * @return The version.
     */
    long getVersion();

    /**
     * <pre>
     * Need support string and place holder.
     * </pre>
     *
     * <code>required .Polarx.Datatypes.Scalar name = 2;</code>
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * <pre>
     * Need support string and place holder.
     * </pre>
     *
     * <code>required .Polarx.Datatypes.Scalar name = 2;</code>
     * @return The name.
     */
    com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar getName();
    /**
     * <pre>
     * Need support string and place holder.
     * </pre>
     *
     * <code>required .Polarx.Datatypes.Scalar name = 2;</code>
     */
    com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder getNameOrBuilder();

    /**
     * <pre>
     * Need support string and place holder.
     * </pre>
     *
     * <code>optional .Polarx.Datatypes.Scalar schema_name = 3;</code>
     * @return Whether the schemaName field is set.
     */
    boolean hasSchemaName();
    /**
     * <pre>
     * Need support string and place holder.
     * </pre>
     *
     * <code>optional .Polarx.Datatypes.Scalar schema_name = 3;</code>
     * @return The schemaName.
     */
    com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar getSchemaName();
    /**
     * <pre>
     * Need support string and place holder.
     * </pre>
     *
     * <code>optional .Polarx.Datatypes.Scalar schema_name = 3;</code>
     */
    com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder getSchemaNameOrBuilder();
  }
  /**
   * Protobuf type {@code Polarx.ExecPlan.TableInfo}
   */
  public  static final class TableInfo extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Polarx.ExecPlan.TableInfo)
      TableInfoOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TableInfo.newBuilder() to construct.
    private TableInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TableInfo() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new TableInfo();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private TableInfo(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {
              bitField0_ |= 0x00000001;
              version_ = input.readInt64();
              break;
            }
            case 18: {
              com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) != 0)) {
                subBuilder = name_.toBuilder();
              }
              name_ = input.readMessage(com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(name_);
                name_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 26: {
              com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) != 0)) {
                subBuilder = schemaName_.toBuilder();
              }
              schemaName_ = input.readMessage(com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(schemaName_);
                schemaName_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_TableInfo_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_TableInfo_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.class, com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.Builder.class);
    }

    private int bitField0_;
    public static final int VERSION_FIELD_NUMBER = 1;
    private long version_;
    /**
     * <pre>
     * Multi-version?
     * </pre>
     *
     * <code>optional int64 version = 1;</code>
     * @return Whether the version field is set.
     */
    public boolean hasVersion() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Multi-version?
     * </pre>
     *
     * <code>optional int64 version = 1;</code>
     * @return The version.
     */
    public long getVersion() {
      return version_;
    }

    public static final int NAME_FIELD_NUMBER = 2;
    private com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar name_;
    /**
     * <pre>
     * Need support string and place holder.
     * </pre>
     *
     * <code>required .Polarx.Datatypes.Scalar name = 2;</code>
     * @return Whether the name field is set.
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Need support string and place holder.
     * </pre>
     *
     * <code>required .Polarx.Datatypes.Scalar name = 2;</code>
     * @return The name.
     */
    public com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar getName() {
      return name_ == null ? com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.getDefaultInstance() : name_;
    }
    /**
     * <pre>
     * Need support string and place holder.
     * </pre>
     *
     * <code>required .Polarx.Datatypes.Scalar name = 2;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder getNameOrBuilder() {
      return name_ == null ? com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.getDefaultInstance() : name_;
    }

    public static final int SCHEMA_NAME_FIELD_NUMBER = 3;
    private com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar schemaName_;
    /**
     * <pre>
     * Need support string and place holder.
     * </pre>
     *
     * <code>optional .Polarx.Datatypes.Scalar schema_name = 3;</code>
     * @return Whether the schemaName field is set.
     */
    public boolean hasSchemaName() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * Need support string and place holder.
     * </pre>
     *
     * <code>optional .Polarx.Datatypes.Scalar schema_name = 3;</code>
     * @return The schemaName.
     */
    public com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar getSchemaName() {
      return schemaName_ == null ? com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.getDefaultInstance() : schemaName_;
    }
    /**
     * <pre>
     * Need support string and place holder.
     * </pre>
     *
     * <code>optional .Polarx.Datatypes.Scalar schema_name = 3;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder getSchemaNameOrBuilder() {
      return schemaName_ == null ? com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.getDefaultInstance() : schemaName_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getName().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasSchemaName()) {
        if (!getSchemaName().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeInt64(1, version_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getName());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getSchemaName());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, version_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getName());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getSchemaName());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo)) {
        return super.equals(obj);
      }
      com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo other = (com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo) obj;

      if (hasVersion() != other.hasVersion()) return false;
      if (hasVersion()) {
        if (getVersion()
            != other.getVersion()) return false;
      }
      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) return false;
      }
      if (hasSchemaName() != other.hasSchemaName()) return false;
      if (hasSchemaName()) {
        if (!getSchemaName()
            .equals(other.getSchemaName())) return false;
      }
        return unknownFields.equals(other.unknownFields);
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasVersion()) {
        hash = (37 * hash) + VERSION_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getVersion());
      }
      if (hasName()) {
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
      }
      if (hasSchemaName()) {
        hash = (37 * hash) + SCHEMA_NAME_FIELD_NUMBER;
        hash = (53 * hash) + getSchemaName().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Polarx.ExecPlan.TableInfo}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Polarx.ExecPlan.TableInfo)
        com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_TableInfo_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_TableInfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.class, com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.Builder.class);
      }

      // Construct using com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getNameFieldBuilder();
          getSchemaNameFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        version_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000001);
        if (nameBuilder_ == null) {
          name_ = null;
        } else {
          nameBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        if (schemaNameBuilder_ == null) {
          schemaName_ = null;
        } else {
          schemaNameBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_TableInfo_descriptor;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo getDefaultInstanceForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.getDefaultInstance();
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo build() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo buildPartial() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo result = new com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.version_ = version_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          if (nameBuilder_ == null) {
            result.name_ = name_;
          } else {
            result.name_ = nameBuilder_.build();
          }
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          if (schemaNameBuilder_ == null) {
            result.schemaName_ = schemaName_;
          } else {
            result.schemaName_ = schemaNameBuilder_.build();
          }
          to_bitField0_ |= 0x00000004;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo) {
          return mergeFrom((com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo other) {
        if (other == com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.getDefaultInstance()) return this;
        if (other.hasVersion()) {
          setVersion(other.getVersion());
        }
        if (other.hasName()) {
          mergeName(other.getName());
        }
        if (other.hasSchemaName()) {
          mergeSchemaName(other.getSchemaName());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasName()) {
          return false;
        }
        if (!getName().isInitialized()) {
          return false;
        }
        if (hasSchemaName()) {
            return getSchemaName().isInitialized();
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private long version_ ;
      /**
       * <pre>
       * Multi-version?
       * </pre>
       *
       * <code>optional int64 version = 1;</code>
       * @return Whether the version field is set.
       */
      public boolean hasVersion() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Multi-version?
       * </pre>
       *
       * <code>optional int64 version = 1;</code>
       * @return The version.
       */
      public long getVersion() {
        return version_;
      }
      /**
       * <pre>
       * Multi-version?
       * </pre>
       *
       * <code>optional int64 version = 1;</code>
       * @param value The version to set.
       * @return This builder for chaining.
       */
      public Builder setVersion(long value) {
        bitField0_ |= 0x00000001;
        version_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Multi-version?
       * </pre>
       *
       * <code>optional int64 version = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearVersion() {
        bitField0_ = (bitField0_ & ~0x00000001);
        version_ = 0L;
        onChanged();
        return this;
      }

      private com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar name_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder, com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder> nameBuilder_;
      /**
       * <pre>
       * Need support string and place holder.
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar name = 2;</code>
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Need support string and place holder.
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar name = 2;</code>
       * @return The name.
       */
      public com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar getName() {
        if (nameBuilder_ == null) {
          return name_ == null ? com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.getDefaultInstance() : name_;
        } else {
          return nameBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Need support string and place holder.
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar name = 2;</code>
       */
      public Builder setName(com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar value) {
        if (nameBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          name_ = value;
          onChanged();
        } else {
          nameBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * Need support string and place holder.
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar name = 2;</code>
       */
      public Builder setName(
          com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder builderForValue) {
        if (nameBuilder_ == null) {
          name_ = builderForValue.build();
          onChanged();
        } else {
          nameBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * Need support string and place holder.
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar name = 2;</code>
       */
      public Builder mergeName(com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar value) {
        if (nameBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
              name_ != null &&
              name_ != com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.getDefaultInstance()) {
            name_ =
              com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.newBuilder(name_).mergeFrom(value).buildPartial();
          } else {
            name_ = value;
          }
          onChanged();
        } else {
          nameBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * Need support string and place holder.
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar name = 2;</code>
       */
      public Builder clearName() {
        if (nameBuilder_ == null) {
          name_ = null;
          onChanged();
        } else {
          nameBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      /**
       * <pre>
       * Need support string and place holder.
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar name = 2;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder getNameBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getNameFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Need support string and place holder.
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar name = 2;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder getNameOrBuilder() {
        if (nameBuilder_ != null) {
          return nameBuilder_.getMessageOrBuilder();
        } else {
          return name_ == null ?
              com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.getDefaultInstance() : name_;
        }
      }
      /**
       * <pre>
       * Need support string and place holder.
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar name = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder, com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder> 
          getNameFieldBuilder() {
        if (nameBuilder_ == null) {
          nameBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder, com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder>(
                  getName(),
                  getParentForChildren(),
                  isClean());
          name_ = null;
        }
        return nameBuilder_;
      }

      private com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar schemaName_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder, com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder> schemaNameBuilder_;
      /**
       * <pre>
       * Need support string and place holder.
       * </pre>
       *
       * <code>optional .Polarx.Datatypes.Scalar schema_name = 3;</code>
       * @return Whether the schemaName field is set.
       */
      public boolean hasSchemaName() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Need support string and place holder.
       * </pre>
       *
       * <code>optional .Polarx.Datatypes.Scalar schema_name = 3;</code>
       * @return The schemaName.
       */
      public com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar getSchemaName() {
        if (schemaNameBuilder_ == null) {
          return schemaName_ == null ? com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.getDefaultInstance() : schemaName_;
        } else {
          return schemaNameBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Need support string and place holder.
       * </pre>
       *
       * <code>optional .Polarx.Datatypes.Scalar schema_name = 3;</code>
       */
      public Builder setSchemaName(com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar value) {
        if (schemaNameBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          schemaName_ = value;
          onChanged();
        } else {
          schemaNameBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <pre>
       * Need support string and place holder.
       * </pre>
       *
       * <code>optional .Polarx.Datatypes.Scalar schema_name = 3;</code>
       */
      public Builder setSchemaName(
          com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder builderForValue) {
        if (schemaNameBuilder_ == null) {
          schemaName_ = builderForValue.build();
          onChanged();
        } else {
          schemaNameBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <pre>
       * Need support string and place holder.
       * </pre>
       *
       * <code>optional .Polarx.Datatypes.Scalar schema_name = 3;</code>
       */
      public Builder mergeSchemaName(com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar value) {
        if (schemaNameBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
              schemaName_ != null &&
              schemaName_ != com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.getDefaultInstance()) {
            schemaName_ =
              com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.newBuilder(schemaName_).mergeFrom(value).buildPartial();
          } else {
            schemaName_ = value;
          }
          onChanged();
        } else {
          schemaNameBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <pre>
       * Need support string and place holder.
       * </pre>
       *
       * <code>optional .Polarx.Datatypes.Scalar schema_name = 3;</code>
       */
      public Builder clearSchemaName() {
        if (schemaNameBuilder_ == null) {
          schemaName_ = null;
          onChanged();
        } else {
          schemaNameBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      /**
       * <pre>
       * Need support string and place holder.
       * </pre>
       *
       * <code>optional .Polarx.Datatypes.Scalar schema_name = 3;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder getSchemaNameBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getSchemaNameFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Need support string and place holder.
       * </pre>
       *
       * <code>optional .Polarx.Datatypes.Scalar schema_name = 3;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder getSchemaNameOrBuilder() {
        if (schemaNameBuilder_ != null) {
          return schemaNameBuilder_.getMessageOrBuilder();
        } else {
          return schemaName_ == null ?
              com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.getDefaultInstance() : schemaName_;
        }
      }
      /**
       * <pre>
       * Need support string and place holder.
       * </pre>
       *
       * <code>optional .Polarx.Datatypes.Scalar schema_name = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder, com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder> 
          getSchemaNameFieldBuilder() {
        if (schemaNameBuilder_ == null) {
          schemaNameBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder, com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder>(
                  getSchemaName(),
                  getParentForChildren(),
                  isClean());
          schemaName_ = null;
        }
        return schemaNameBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Polarx.ExecPlan.TableInfo)
    }

    // @@protoc_insertion_point(class_scope:Polarx.ExecPlan.TableInfo)
    private static final com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo();
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<TableInfo>
        PARSER = new com.google.protobuf.AbstractParser<TableInfo>() {
      @java.lang.Override
      public TableInfo parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new TableInfo(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<TableInfo> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<TableInfo> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface IndexInfoOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Polarx.ExecPlan.IndexInfo)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Need support string and place holder.
     * </pre>
     *
     * <code>required .Polarx.Datatypes.Scalar name = 1;</code>
     * @return Whether the name field is set.
     */
    boolean hasName();
    /**
     * <pre>
     * Need support string and place holder.
     * </pre>
     *
     * <code>required .Polarx.Datatypes.Scalar name = 1;</code>
     * @return The name.
     */
    com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar getName();
    /**
     * <pre>
     * Need support string and place holder.
     * </pre>
     *
     * <code>required .Polarx.Datatypes.Scalar name = 1;</code>
     */
    com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder getNameOrBuilder();

    /**
     * <code>optional int32 use_parts = 2;</code>
     * @return Whether the useParts field is set.
     */
    boolean hasUseParts();
    /**
     * <code>optional int32 use_parts = 2;</code>
     * @return The useParts.
     */
    int getUseParts();
  }
  /**
   * Protobuf type {@code Polarx.ExecPlan.IndexInfo}
   */
  public  static final class IndexInfo extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Polarx.ExecPlan.IndexInfo)
      IndexInfoOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use IndexInfo.newBuilder() to construct.
    private IndexInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private IndexInfo() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new IndexInfo();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private IndexInfo(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) != 0)) {
                subBuilder = name_.toBuilder();
              }
              name_ = input.readMessage(com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(name_);
                name_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              useParts_ = input.readInt32();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_IndexInfo_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_IndexInfo_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.class, com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.Builder.class);
    }

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    private com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar name_;
    /**
     * <pre>
     * Need support string and place holder.
     * </pre>
     *
     * <code>required .Polarx.Datatypes.Scalar name = 1;</code>
     * @return Whether the name field is set.
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Need support string and place holder.
     * </pre>
     *
     * <code>required .Polarx.Datatypes.Scalar name = 1;</code>
     * @return The name.
     */
    public com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar getName() {
      return name_ == null ? com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.getDefaultInstance() : name_;
    }
    /**
     * <pre>
     * Need support string and place holder.
     * </pre>
     *
     * <code>required .Polarx.Datatypes.Scalar name = 1;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder getNameOrBuilder() {
      return name_ == null ? com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.getDefaultInstance() : name_;
    }

    public static final int USE_PARTS_FIELD_NUMBER = 2;
    private int useParts_;
    /**
     * <code>optional int32 use_parts = 2;</code>
     * @return Whether the useParts field is set.
     */
    public boolean hasUseParts() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>optional int32 use_parts = 2;</code>
     * @return The useParts.
     */
    public int getUseParts() {
      return useParts_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getName().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getName());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeInt32(2, useParts_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getName());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, useParts_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo)) {
        return super.equals(obj);
      }
      com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo other = (com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo) obj;

      if (hasName() != other.hasName()) return false;
      if (hasName()) {
        if (!getName()
            .equals(other.getName())) return false;
      }
      if (hasUseParts() != other.hasUseParts()) return false;
      if (hasUseParts()) {
        if (getUseParts()
            != other.getUseParts()) return false;
      }
        return unknownFields.equals(other.unknownFields);
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasName()) {
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
      }
      if (hasUseParts()) {
        hash = (37 * hash) + USE_PARTS_FIELD_NUMBER;
        hash = (53 * hash) + getUseParts();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Polarx.ExecPlan.IndexInfo}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Polarx.ExecPlan.IndexInfo)
        com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_IndexInfo_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_IndexInfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.class, com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.Builder.class);
      }

      // Construct using com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getNameFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (nameBuilder_ == null) {
          name_ = null;
        } else {
          nameBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        useParts_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_IndexInfo_descriptor;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo getDefaultInstanceForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.getDefaultInstance();
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo build() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo buildPartial() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo result = new com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          if (nameBuilder_ == null) {
            result.name_ = name_;
          } else {
            result.name_ = nameBuilder_.build();
          }
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.useParts_ = useParts_;
          to_bitField0_ |= 0x00000002;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo) {
          return mergeFrom((com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo other) {
        if (other == com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.getDefaultInstance()) return this;
        if (other.hasName()) {
          mergeName(other.getName());
        }
        if (other.hasUseParts()) {
          setUseParts(other.getUseParts());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasName()) {
          return false;
        }
          return getName().isInitialized();
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar name_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder, com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder> nameBuilder_;
      /**
       * <pre>
       * Need support string and place holder.
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar name = 1;</code>
       * @return Whether the name field is set.
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Need support string and place holder.
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar name = 1;</code>
       * @return The name.
       */
      public com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar getName() {
        if (nameBuilder_ == null) {
          return name_ == null ? com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.getDefaultInstance() : name_;
        } else {
          return nameBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Need support string and place holder.
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar name = 1;</code>
       */
      public Builder setName(com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar value) {
        if (nameBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          name_ = value;
          onChanged();
        } else {
          nameBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Need support string and place holder.
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar name = 1;</code>
       */
      public Builder setName(
          com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder builderForValue) {
        if (nameBuilder_ == null) {
          name_ = builderForValue.build();
          onChanged();
        } else {
          nameBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Need support string and place holder.
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar name = 1;</code>
       */
      public Builder mergeName(com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar value) {
        if (nameBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
              name_ != null &&
              name_ != com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.getDefaultInstance()) {
            name_ =
              com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.newBuilder(name_).mergeFrom(value).buildPartial();
          } else {
            name_ = value;
          }
          onChanged();
        } else {
          nameBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Need support string and place holder.
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar name = 1;</code>
       */
      public Builder clearName() {
        if (nameBuilder_ == null) {
          name_ = null;
          onChanged();
        } else {
          nameBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <pre>
       * Need support string and place holder.
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar name = 1;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder getNameBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getNameFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Need support string and place holder.
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar name = 1;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder getNameOrBuilder() {
        if (nameBuilder_ != null) {
          return nameBuilder_.getMessageOrBuilder();
        } else {
          return name_ == null ?
              com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.getDefaultInstance() : name_;
        }
      }
      /**
       * <pre>
       * Need support string and place holder.
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar name = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder, com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder> 
          getNameFieldBuilder() {
        if (nameBuilder_ == null) {
          nameBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder, com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder>(
                  getName(),
                  getParentForChildren(),
                  isClean());
          name_ = null;
        }
        return nameBuilder_;
      }

      private int useParts_ ;
      /**
       * <code>optional int32 use_parts = 2;</code>
       * @return Whether the useParts field is set.
       */
      public boolean hasUseParts() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional int32 use_parts = 2;</code>
       * @return The useParts.
       */
      public int getUseParts() {
        return useParts_;
      }
      /**
       * <code>optional int32 use_parts = 2;</code>
       * @param value The useParts to set.
       * @return This builder for chaining.
       */
      public Builder setUseParts(int value) {
        bitField0_ |= 0x00000002;
        useParts_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 use_parts = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearUseParts() {
        bitField0_ = (bitField0_ & ~0x00000002);
        useParts_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Polarx.ExecPlan.IndexInfo)
    }

    // @@protoc_insertion_point(class_scope:Polarx.ExecPlan.IndexInfo)
    private static final com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo();
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<IndexInfo>
        PARSER = new com.google.protobuf.AbstractParser<IndexInfo>() {
      @java.lang.Override
      public IndexInfo parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new IndexInfo(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<IndexInfo> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<IndexInfo> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TransactionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Polarx.ExecPlan.Transaction)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * Protobuf type {@code Polarx.ExecPlan.Transaction}
   */
  public  static final class Transaction extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Polarx.ExecPlan.Transaction)
      TransactionOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Transaction.newBuilder() to construct.
    private Transaction(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Transaction() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Transaction();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Transaction(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_Transaction_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_Transaction_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.class, com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.Builder.class);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction)) {
        return super.equals(obj);
      }
      com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction other = (com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction) obj;

        return unknownFields.equals(other.unknownFields);
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Polarx.ExecPlan.Transaction}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Polarx.ExecPlan.Transaction)
        com.mysql.cj.x.protobuf.PolarxExecPlan.TransactionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_Transaction_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_Transaction_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.class, com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.Builder.class);
      }

      // Construct using com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_Transaction_descriptor;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction getDefaultInstanceForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.getDefaultInstance();
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction build() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction buildPartial() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction result = new com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction(this);
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction) {
          return mergeFrom((com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction other) {
        if (other == com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Polarx.ExecPlan.Transaction)
    }

    // @@protoc_insertion_point(class_scope:Polarx.ExecPlan.Transaction)
    private static final com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction();
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<Transaction>
        PARSER = new com.google.protobuf.AbstractParser<Transaction>() {
      @java.lang.Override
      public Transaction parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new Transaction(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<Transaction> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Transaction> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BloomFilterOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Polarx.ExecPlan.BloomFilter)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required uint32 total_bits = 1;</code>
     * @return Whether the totalBits field is set.
     */
    boolean hasTotalBits();
    /**
     * <code>required uint32 total_bits = 1;</code>
     * @return The totalBits.
     */
    int getTotalBits();

    /**
     * <code>required uint32 number_hash = 2;</code>
     * @return Whether the numberHash field is set.
     */
    boolean hasNumberHash();
    /**
     * <code>required uint32 number_hash = 2;</code>
     * @return The numberHash.
     */
    int getNumberHash();

    /**
     * <pre>
     * 'murmur3_128'
     * </pre>
     *
     * <code>required bytes strategy = 3;</code>
     * @return Whether the strategy field is set.
     */
    boolean hasStrategy();
    /**
     * <pre>
     * 'murmur3_128'
     * </pre>
     *
     * <code>required bytes strategy = 3;</code>
     * @return The strategy.
     */
    com.google.protobuf.ByteString getStrategy();

    /**
     * <code>required bytes data = 4;</code>
     * @return Whether the data field is set.
     */
    boolean hasData();
    /**
     * <code>required bytes data = 4;</code>
     * @return The data.
     */
    com.google.protobuf.ByteString getData();
  }
  /**
   * Protobuf type {@code Polarx.ExecPlan.BloomFilter}
   */
  public  static final class BloomFilter extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Polarx.ExecPlan.BloomFilter)
      BloomFilterOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BloomFilter.newBuilder() to construct.
    private BloomFilter(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BloomFilter() {
      strategy_ = com.google.protobuf.ByteString.EMPTY;
      data_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new BloomFilter();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private BloomFilter(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {
              bitField0_ |= 0x00000001;
              totalBits_ = input.readUInt32();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              numberHash_ = input.readUInt32();
              break;
            }
            case 26: {
              bitField0_ |= 0x00000004;
              strategy_ = input.readBytes();
              break;
            }
            case 34: {
              bitField0_ |= 0x00000008;
              data_ = input.readBytes();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_BloomFilter_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_BloomFilter_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.mysql.cj.x.protobuf.PolarxExecPlan.BloomFilter.class, com.mysql.cj.x.protobuf.PolarxExecPlan.BloomFilter.Builder.class);
    }

    private int bitField0_;
    public static final int TOTAL_BITS_FIELD_NUMBER = 1;
    private int totalBits_;
    /**
     * <code>required uint32 total_bits = 1;</code>
     * @return Whether the totalBits field is set.
     */
    public boolean hasTotalBits() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required uint32 total_bits = 1;</code>
     * @return The totalBits.
     */
    public int getTotalBits() {
      return totalBits_;
    }

    public static final int NUMBER_HASH_FIELD_NUMBER = 2;
    private int numberHash_;
    /**
     * <code>required uint32 number_hash = 2;</code>
     * @return Whether the numberHash field is set.
     */
    public boolean hasNumberHash() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>required uint32 number_hash = 2;</code>
     * @return The numberHash.
     */
    public int getNumberHash() {
      return numberHash_;
    }

    public static final int STRATEGY_FIELD_NUMBER = 3;
    private com.google.protobuf.ByteString strategy_;
    /**
     * <pre>
     * 'murmur3_128'
     * </pre>
     *
     * <code>required bytes strategy = 3;</code>
     * @return Whether the strategy field is set.
     */
    public boolean hasStrategy() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * 'murmur3_128'
     * </pre>
     *
     * <code>required bytes strategy = 3;</code>
     * @return The strategy.
     */
    public com.google.protobuf.ByteString getStrategy() {
      return strategy_;
    }

    public static final int DATA_FIELD_NUMBER = 4;
    private com.google.protobuf.ByteString data_;
    /**
     * <code>required bytes data = 4;</code>
     * @return Whether the data field is set.
     */
    public boolean hasData() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>required bytes data = 4;</code>
     * @return The data.
     */
    public com.google.protobuf.ByteString getData() {
      return data_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasTotalBits()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasNumberHash()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasStrategy()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasData()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeUInt32(1, totalBits_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeUInt32(2, numberHash_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeBytes(3, strategy_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeBytes(4, data_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, totalBits_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, numberHash_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, strategy_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, data_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.BloomFilter)) {
        return super.equals(obj);
      }
      com.mysql.cj.x.protobuf.PolarxExecPlan.BloomFilter other = (com.mysql.cj.x.protobuf.PolarxExecPlan.BloomFilter) obj;

      if (hasTotalBits() != other.hasTotalBits()) return false;
      if (hasTotalBits()) {
        if (getTotalBits()
            != other.getTotalBits()) return false;
      }
      if (hasNumberHash() != other.hasNumberHash()) return false;
      if (hasNumberHash()) {
        if (getNumberHash()
            != other.getNumberHash()) return false;
      }
      if (hasStrategy() != other.hasStrategy()) return false;
      if (hasStrategy()) {
        if (!getStrategy()
            .equals(other.getStrategy())) return false;
      }
      if (hasData() != other.hasData()) return false;
      if (hasData()) {
        if (!getData()
            .equals(other.getData())) return false;
      }
        return unknownFields.equals(other.unknownFields);
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasTotalBits()) {
        hash = (37 * hash) + TOTAL_BITS_FIELD_NUMBER;
        hash = (53 * hash) + getTotalBits();
      }
      if (hasNumberHash()) {
        hash = (37 * hash) + NUMBER_HASH_FIELD_NUMBER;
        hash = (53 * hash) + getNumberHash();
      }
      if (hasStrategy()) {
        hash = (37 * hash) + STRATEGY_FIELD_NUMBER;
        hash = (53 * hash) + getStrategy().hashCode();
      }
      if (hasData()) {
        hash = (37 * hash) + DATA_FIELD_NUMBER;
        hash = (53 * hash) + getData().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.BloomFilter parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.BloomFilter parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.BloomFilter parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.BloomFilter parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.BloomFilter parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.BloomFilter parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.BloomFilter parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.BloomFilter parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.BloomFilter parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.BloomFilter parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.BloomFilter parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.BloomFilter parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.mysql.cj.x.protobuf.PolarxExecPlan.BloomFilter prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Polarx.ExecPlan.BloomFilter}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Polarx.ExecPlan.BloomFilter)
        com.mysql.cj.x.protobuf.PolarxExecPlan.BloomFilterOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_BloomFilter_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_BloomFilter_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.mysql.cj.x.protobuf.PolarxExecPlan.BloomFilter.class, com.mysql.cj.x.protobuf.PolarxExecPlan.BloomFilter.Builder.class);
      }

      // Construct using com.mysql.cj.x.protobuf.PolarxExecPlan.BloomFilter.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        totalBits_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        numberHash_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        strategy_ = com.google.protobuf.ByteString.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        data_ = com.google.protobuf.ByteString.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_BloomFilter_descriptor;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.BloomFilter getDefaultInstanceForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.BloomFilter.getDefaultInstance();
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.BloomFilter build() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.BloomFilter result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.BloomFilter buildPartial() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.BloomFilter result = new com.mysql.cj.x.protobuf.PolarxExecPlan.BloomFilter(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.totalBits_ = totalBits_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.numberHash_ = numberHash_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          to_bitField0_ |= 0x00000004;
        }
        result.strategy_ = strategy_;
        if (((from_bitField0_ & 0x00000008) != 0)) {
          to_bitField0_ |= 0x00000008;
        }
        result.data_ = data_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.BloomFilter) {
          return mergeFrom((com.mysql.cj.x.protobuf.PolarxExecPlan.BloomFilter)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.mysql.cj.x.protobuf.PolarxExecPlan.BloomFilter other) {
        if (other == com.mysql.cj.x.protobuf.PolarxExecPlan.BloomFilter.getDefaultInstance()) return this;
        if (other.hasTotalBits()) {
          setTotalBits(other.getTotalBits());
        }
        if (other.hasNumberHash()) {
          setNumberHash(other.getNumberHash());
        }
        if (other.hasStrategy()) {
          setStrategy(other.getStrategy());
        }
        if (other.hasData()) {
          setData(other.getData());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasTotalBits()) {
          return false;
        }
        if (!hasNumberHash()) {
          return false;
        }
        if (!hasStrategy()) {
          return false;
        }
          return hasData();
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.mysql.cj.x.protobuf.PolarxExecPlan.BloomFilter parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.mysql.cj.x.protobuf.PolarxExecPlan.BloomFilter) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int totalBits_ ;
      /**
       * <code>required uint32 total_bits = 1;</code>
       * @return Whether the totalBits field is set.
       */
      public boolean hasTotalBits() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required uint32 total_bits = 1;</code>
       * @return The totalBits.
       */
      public int getTotalBits() {
        return totalBits_;
      }
      /**
       * <code>required uint32 total_bits = 1;</code>
       * @param value The totalBits to set.
       * @return This builder for chaining.
       */
      public Builder setTotalBits(int value) {
        bitField0_ |= 0x00000001;
        totalBits_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required uint32 total_bits = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTotalBits() {
        bitField0_ = (bitField0_ & ~0x00000001);
        totalBits_ = 0;
        onChanged();
        return this;
      }

      private int numberHash_ ;
      /**
       * <code>required uint32 number_hash = 2;</code>
       * @return Whether the numberHash field is set.
       */
      public boolean hasNumberHash() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required uint32 number_hash = 2;</code>
       * @return The numberHash.
       */
      public int getNumberHash() {
        return numberHash_;
      }
      /**
       * <code>required uint32 number_hash = 2;</code>
       * @param value The numberHash to set.
       * @return This builder for chaining.
       */
      public Builder setNumberHash(int value) {
        bitField0_ |= 0x00000002;
        numberHash_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required uint32 number_hash = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearNumberHash() {
        bitField0_ = (bitField0_ & ~0x00000002);
        numberHash_ = 0;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString strategy_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * 'murmur3_128'
       * </pre>
       *
       * <code>required bytes strategy = 3;</code>
       * @return Whether the strategy field is set.
       */
      public boolean hasStrategy() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * 'murmur3_128'
       * </pre>
       *
       * <code>required bytes strategy = 3;</code>
       * @return The strategy.
       */
      public com.google.protobuf.ByteString getStrategy() {
        return strategy_;
      }
      /**
       * <pre>
       * 'murmur3_128'
       * </pre>
       *
       * <code>required bytes strategy = 3;</code>
       * @param value The strategy to set.
       * @return This builder for chaining.
       */
      public Builder setStrategy(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        strategy_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 'murmur3_128'
       * </pre>
       *
       * <code>required bytes strategy = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearStrategy() {
        bitField0_ = (bitField0_ & ~0x00000004);
        strategy_ = getDefaultInstance().getStrategy();
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString data_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>required bytes data = 4;</code>
       * @return Whether the data field is set.
       */
      public boolean hasData() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>required bytes data = 4;</code>
       * @return The data.
       */
      public com.google.protobuf.ByteString getData() {
        return data_;
      }
      /**
       * <code>required bytes data = 4;</code>
       * @param value The data to set.
       * @return This builder for chaining.
       */
      public Builder setData(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        data_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required bytes data = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearData() {
        bitField0_ = (bitField0_ & ~0x00000008);
        data_ = getDefaultInstance().getData();
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Polarx.ExecPlan.BloomFilter)
    }

    // @@protoc_insertion_point(class_scope:Polarx.ExecPlan.BloomFilter)
    private static final com.mysql.cj.x.protobuf.PolarxExecPlan.BloomFilter DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.mysql.cj.x.protobuf.PolarxExecPlan.BloomFilter();
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.BloomFilter getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<BloomFilter>
        PARSER = new com.google.protobuf.AbstractParser<BloomFilter>() {
      @java.lang.Override
      public BloomFilter parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new BloomFilter(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<BloomFilter> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<BloomFilter> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.mysql.cj.x.protobuf.PolarxExecPlan.BloomFilter getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetTSOOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Polarx.ExecPlan.GetTSO)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required bytes leader_name = 1;</code>
     * @return Whether the leaderName field is set.
     */
    boolean hasLeaderName();
    /**
     * <code>required bytes leader_name = 1;</code>
     * @return The leaderName.
     */
    com.google.protobuf.ByteString getLeaderName();

    /**
     * <code>required int32 batch_count = 2;</code>
     * @return Whether the batchCount field is set.
     */
    boolean hasBatchCount();
    /**
     * <code>required int32 batch_count = 2;</code>
     * @return The batchCount.
     */
    int getBatchCount();
  }
  /**
   * <pre>
   *Client send GetTSO message to Server
   * </pre>
   *
   * Protobuf type {@code Polarx.ExecPlan.GetTSO}
   */
  public  static final class GetTSO extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Polarx.ExecPlan.GetTSO)
      GetTSOOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetTSO.newBuilder() to construct.
    private GetTSO(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetTSO() {
      leaderName_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new GetTSO();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private GetTSO(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              bitField0_ |= 0x00000001;
              leaderName_ = input.readBytes();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              batchCount_ = input.readInt32();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_GetTSO_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_GetTSO_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.mysql.cj.x.protobuf.PolarxExecPlan.GetTSO.class, com.mysql.cj.x.protobuf.PolarxExecPlan.GetTSO.Builder.class);
    }

    private int bitField0_;
    public static final int LEADER_NAME_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString leaderName_;
    /**
     * <code>required bytes leader_name = 1;</code>
     * @return Whether the leaderName field is set.
     */
    public boolean hasLeaderName() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required bytes leader_name = 1;</code>
     * @return The leaderName.
     */
    public com.google.protobuf.ByteString getLeaderName() {
      return leaderName_;
    }

    public static final int BATCH_COUNT_FIELD_NUMBER = 2;
    private int batchCount_;
    /**
     * <code>required int32 batch_count = 2;</code>
     * @return Whether the batchCount field is set.
     */
    public boolean hasBatchCount() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>required int32 batch_count = 2;</code>
     * @return The batchCount.
     */
    public int getBatchCount() {
      return batchCount_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasLeaderName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasBatchCount()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeBytes(1, leaderName_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeInt32(2, batchCount_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, leaderName_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, batchCount_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.GetTSO)) {
        return super.equals(obj);
      }
      com.mysql.cj.x.protobuf.PolarxExecPlan.GetTSO other = (com.mysql.cj.x.protobuf.PolarxExecPlan.GetTSO) obj;

      if (hasLeaderName() != other.hasLeaderName()) return false;
      if (hasLeaderName()) {
        if (!getLeaderName()
            .equals(other.getLeaderName())) return false;
      }
      if (hasBatchCount() != other.hasBatchCount()) return false;
      if (hasBatchCount()) {
        if (getBatchCount()
            != other.getBatchCount()) return false;
      }
        return unknownFields.equals(other.unknownFields);
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasLeaderName()) {
        hash = (37 * hash) + LEADER_NAME_FIELD_NUMBER;
        hash = (53 * hash) + getLeaderName().hashCode();
      }
      if (hasBatchCount()) {
        hash = (37 * hash) + BATCH_COUNT_FIELD_NUMBER;
        hash = (53 * hash) + getBatchCount();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.GetTSO parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.GetTSO parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.GetTSO parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.GetTSO parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.GetTSO parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.GetTSO parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.GetTSO parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.GetTSO parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.GetTSO parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.GetTSO parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.GetTSO parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.GetTSO parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.mysql.cj.x.protobuf.PolarxExecPlan.GetTSO prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *Client send GetTSO message to Server
     * </pre>
     *
     * Protobuf type {@code Polarx.ExecPlan.GetTSO}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Polarx.ExecPlan.GetTSO)
        com.mysql.cj.x.protobuf.PolarxExecPlan.GetTSOOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_GetTSO_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_GetTSO_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.mysql.cj.x.protobuf.PolarxExecPlan.GetTSO.class, com.mysql.cj.x.protobuf.PolarxExecPlan.GetTSO.Builder.class);
      }

      // Construct using com.mysql.cj.x.protobuf.PolarxExecPlan.GetTSO.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        leaderName_ = com.google.protobuf.ByteString.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        batchCount_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_GetTSO_descriptor;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.GetTSO getDefaultInstanceForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.GetTSO.getDefaultInstance();
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.GetTSO build() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.GetTSO result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.GetTSO buildPartial() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.GetTSO result = new com.mysql.cj.x.protobuf.PolarxExecPlan.GetTSO(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          to_bitField0_ |= 0x00000001;
        }
        result.leaderName_ = leaderName_;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.batchCount_ = batchCount_;
          to_bitField0_ |= 0x00000002;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.GetTSO) {
          return mergeFrom((com.mysql.cj.x.protobuf.PolarxExecPlan.GetTSO)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.mysql.cj.x.protobuf.PolarxExecPlan.GetTSO other) {
        if (other == com.mysql.cj.x.protobuf.PolarxExecPlan.GetTSO.getDefaultInstance()) return this;
        if (other.hasLeaderName()) {
          setLeaderName(other.getLeaderName());
        }
        if (other.hasBatchCount()) {
          setBatchCount(other.getBatchCount());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasLeaderName()) {
          return false;
        }
          return hasBatchCount();
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.mysql.cj.x.protobuf.PolarxExecPlan.GetTSO parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.mysql.cj.x.protobuf.PolarxExecPlan.GetTSO) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.ByteString leaderName_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>required bytes leader_name = 1;</code>
       * @return Whether the leaderName field is set.
       */
      public boolean hasLeaderName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required bytes leader_name = 1;</code>
       * @return The leaderName.
       */
      public com.google.protobuf.ByteString getLeaderName() {
        return leaderName_;
      }
      /**
       * <code>required bytes leader_name = 1;</code>
       * @param value The leaderName to set.
       * @return This builder for chaining.
       */
      public Builder setLeaderName(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        leaderName_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required bytes leader_name = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearLeaderName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        leaderName_ = getDefaultInstance().getLeaderName();
        onChanged();
        return this;
      }

      private int batchCount_ ;
      /**
       * <code>required int32 batch_count = 2;</code>
       * @return Whether the batchCount field is set.
       */
      public boolean hasBatchCount() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required int32 batch_count = 2;</code>
       * @return The batchCount.
       */
      public int getBatchCount() {
        return batchCount_;
      }
      /**
       * <code>required int32 batch_count = 2;</code>
       * @param value The batchCount to set.
       * @return This builder for chaining.
       */
      public Builder setBatchCount(int value) {
        bitField0_ |= 0x00000002;
        batchCount_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 batch_count = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearBatchCount() {
        bitField0_ = (bitField0_ & ~0x00000002);
        batchCount_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Polarx.ExecPlan.GetTSO)
    }

    // @@protoc_insertion_point(class_scope:Polarx.ExecPlan.GetTSO)
    private static final com.mysql.cj.x.protobuf.PolarxExecPlan.GetTSO DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.mysql.cj.x.protobuf.PolarxExecPlan.GetTSO();
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.GetTSO getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<GetTSO>
        PARSER = new com.google.protobuf.AbstractParser<GetTSO>() {
      @java.lang.Override
      public GetTSO parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GetTSO(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<GetTSO> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GetTSO> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.mysql.cj.x.protobuf.PolarxExecPlan.GetTSO getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ResultTSOOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Polarx.ExecPlan.ResultTSO)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required int32 error_no = 1;</code>
     * @return Whether the errorNo field is set.
     */
    boolean hasErrorNo();
    /**
     * <code>required int32 error_no = 1;</code>
     * @return The errorNo.
     */
    int getErrorNo();

    /**
     * <code>required uint64 ts = 2;</code>
     * @return Whether the ts field is set.
     */
    boolean hasTs();
    /**
     * <code>required uint64 ts = 2;</code>
     * @return The ts.
     */
    long getTs();
  }
  /**
   * <pre>
   *Server return ResultTSO message to Client
   * </pre>
   *
   * Protobuf type {@code Polarx.ExecPlan.ResultTSO}
   */
  public  static final class ResultTSO extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Polarx.ExecPlan.ResultTSO)
      ResultTSOOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ResultTSO.newBuilder() to construct.
    private ResultTSO(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ResultTSO() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ResultTSO();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ResultTSO(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {
              bitField0_ |= 0x00000001;
              errorNo_ = input.readInt32();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              ts_ = input.readUInt64();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_ResultTSO_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_ResultTSO_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.mysql.cj.x.protobuf.PolarxExecPlan.ResultTSO.class, com.mysql.cj.x.protobuf.PolarxExecPlan.ResultTSO.Builder.class);
    }

    private int bitField0_;
    public static final int ERROR_NO_FIELD_NUMBER = 1;
    private int errorNo_;
    /**
     * <code>required int32 error_no = 1;</code>
     * @return Whether the errorNo field is set.
     */
    public boolean hasErrorNo() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required int32 error_no = 1;</code>
     * @return The errorNo.
     */
    public int getErrorNo() {
      return errorNo_;
    }

    public static final int TS_FIELD_NUMBER = 2;
    private long ts_;
    /**
     * <code>required uint64 ts = 2;</code>
     * @return Whether the ts field is set.
     */
    public boolean hasTs() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>required uint64 ts = 2;</code>
     * @return The ts.
     */
    public long getTs() {
      return ts_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasErrorNo()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasTs()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeInt32(1, errorNo_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeUInt64(2, ts_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, errorNo_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(2, ts_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.ResultTSO)) {
        return super.equals(obj);
      }
      com.mysql.cj.x.protobuf.PolarxExecPlan.ResultTSO other = (com.mysql.cj.x.protobuf.PolarxExecPlan.ResultTSO) obj;

      if (hasErrorNo() != other.hasErrorNo()) return false;
      if (hasErrorNo()) {
        if (getErrorNo()
            != other.getErrorNo()) return false;
      }
      if (hasTs() != other.hasTs()) return false;
      if (hasTs()) {
        if (getTs()
            != other.getTs()) return false;
      }
        return unknownFields.equals(other.unknownFields);
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasErrorNo()) {
        hash = (37 * hash) + ERROR_NO_FIELD_NUMBER;
        hash = (53 * hash) + getErrorNo();
      }
      if (hasTs()) {
        hash = (37 * hash) + TS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getTs());
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.ResultTSO parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.ResultTSO parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.ResultTSO parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.ResultTSO parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.ResultTSO parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.ResultTSO parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.ResultTSO parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.ResultTSO parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.ResultTSO parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.ResultTSO parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.ResultTSO parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.ResultTSO parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.mysql.cj.x.protobuf.PolarxExecPlan.ResultTSO prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *Server return ResultTSO message to Client
     * </pre>
     *
     * Protobuf type {@code Polarx.ExecPlan.ResultTSO}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Polarx.ExecPlan.ResultTSO)
        com.mysql.cj.x.protobuf.PolarxExecPlan.ResultTSOOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_ResultTSO_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_ResultTSO_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.mysql.cj.x.protobuf.PolarxExecPlan.ResultTSO.class, com.mysql.cj.x.protobuf.PolarxExecPlan.ResultTSO.Builder.class);
      }

      // Construct using com.mysql.cj.x.protobuf.PolarxExecPlan.ResultTSO.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        errorNo_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        ts_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_ResultTSO_descriptor;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.ResultTSO getDefaultInstanceForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.ResultTSO.getDefaultInstance();
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.ResultTSO build() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.ResultTSO result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.ResultTSO buildPartial() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.ResultTSO result = new com.mysql.cj.x.protobuf.PolarxExecPlan.ResultTSO(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.errorNo_ = errorNo_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.ts_ = ts_;
          to_bitField0_ |= 0x00000002;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.ResultTSO) {
          return mergeFrom((com.mysql.cj.x.protobuf.PolarxExecPlan.ResultTSO)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.mysql.cj.x.protobuf.PolarxExecPlan.ResultTSO other) {
        if (other == com.mysql.cj.x.protobuf.PolarxExecPlan.ResultTSO.getDefaultInstance()) return this;
        if (other.hasErrorNo()) {
          setErrorNo(other.getErrorNo());
        }
        if (other.hasTs()) {
          setTs(other.getTs());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasErrorNo()) {
          return false;
        }
          return hasTs();
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.mysql.cj.x.protobuf.PolarxExecPlan.ResultTSO parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.mysql.cj.x.protobuf.PolarxExecPlan.ResultTSO) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int errorNo_ ;
      /**
       * <code>required int32 error_no = 1;</code>
       * @return Whether the errorNo field is set.
       */
      public boolean hasErrorNo() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required int32 error_no = 1;</code>
       * @return The errorNo.
       */
      public int getErrorNo() {
        return errorNo_;
      }
      /**
       * <code>required int32 error_no = 1;</code>
       * @param value The errorNo to set.
       * @return This builder for chaining.
       */
      public Builder setErrorNo(int value) {
        bitField0_ |= 0x00000001;
        errorNo_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 error_no = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearErrorNo() {
        bitField0_ = (bitField0_ & ~0x00000001);
        errorNo_ = 0;
        onChanged();
        return this;
      }

      private long ts_ ;
      /**
       * <code>required uint64 ts = 2;</code>
       * @return Whether the ts field is set.
       */
      public boolean hasTs() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required uint64 ts = 2;</code>
       * @return The ts.
       */
      public long getTs() {
        return ts_;
      }
      /**
       * <code>required uint64 ts = 2;</code>
       * @param value The ts to set.
       * @return This builder for chaining.
       */
      public Builder setTs(long value) {
        bitField0_ |= 0x00000002;
        ts_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required uint64 ts = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearTs() {
        bitField0_ = (bitField0_ & ~0x00000002);
        ts_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Polarx.ExecPlan.ResultTSO)
    }

    // @@protoc_insertion_point(class_scope:Polarx.ExecPlan.ResultTSO)
    private static final com.mysql.cj.x.protobuf.PolarxExecPlan.ResultTSO DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.mysql.cj.x.protobuf.PolarxExecPlan.ResultTSO();
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.ResultTSO getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<ResultTSO>
        PARSER = new com.google.protobuf.AbstractParser<ResultTSO>() {
      @java.lang.Override
      public ResultTSO parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ResultTSO(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<ResultTSO> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ResultTSO> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.mysql.cj.x.protobuf.PolarxExecPlan.ResultTSO getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface KeyExprOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Polarx.ExecPlan.KeyExpr)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * 需要能处理列名或列id，列id从0开始
     * </pre>
     *
     * <code>required .Polarx.Datatypes.Scalar field = 1;</code>
     * @return Whether the field field is set.
     */
    boolean hasField();
    /**
     * <pre>
     * 需要能处理列名或列id，列id从0开始
     * </pre>
     *
     * <code>required .Polarx.Datatypes.Scalar field = 1;</code>
     * @return The field.
     */
    com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar getField();
    /**
     * <pre>
     * 需要能处理列名或列id，列id从0开始
     * </pre>
     *
     * <code>required .Polarx.Datatypes.Scalar field = 1;</code>
     */
    com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder getFieldOrBuilder();

    /**
     * <pre>
     * 需要能处理动态参数
     * </pre>
     *
     * <code>required .Polarx.Datatypes.Scalar value = 2;</code>
     * @return Whether the value field is set.
     */
    boolean hasValue();
    /**
     * <pre>
     * 需要能处理动态参数
     * </pre>
     *
     * <code>required .Polarx.Datatypes.Scalar value = 2;</code>
     * @return The value.
     */
    com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar getValue();
    /**
     * <pre>
     * 需要能处理动态参数
     * </pre>
     *
     * <code>required .Polarx.Datatypes.Scalar value = 2;</code>
     */
    com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder getValueOrBuilder();
  }
  /**
   * <pre>
   * 单个列条件
   * </pre>
   *
   * Protobuf type {@code Polarx.ExecPlan.KeyExpr}
   */
  public  static final class KeyExpr extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Polarx.ExecPlan.KeyExpr)
      KeyExprOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use KeyExpr.newBuilder() to construct.
    private KeyExpr(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private KeyExpr() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new KeyExpr();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private KeyExpr(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) != 0)) {
                subBuilder = field_.toBuilder();
              }
              field_ = input.readMessage(com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(field_);
                field_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) != 0)) {
                subBuilder = value_.toBuilder();
              }
              value_ = input.readMessage(com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(value_);
                value_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_KeyExpr_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_KeyExpr_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr.class, com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr.Builder.class);
    }

    private int bitField0_;
    public static final int FIELD_FIELD_NUMBER = 1;
    private com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar field_;
    /**
     * <pre>
     * 需要能处理列名或列id，列id从0开始
     * </pre>
     *
     * <code>required .Polarx.Datatypes.Scalar field = 1;</code>
     * @return Whether the field field is set.
     */
    public boolean hasField() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * 需要能处理列名或列id，列id从0开始
     * </pre>
     *
     * <code>required .Polarx.Datatypes.Scalar field = 1;</code>
     * @return The field.
     */
    public com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar getField() {
      return field_ == null ? com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.getDefaultInstance() : field_;
    }
    /**
     * <pre>
     * 需要能处理列名或列id，列id从0开始
     * </pre>
     *
     * <code>required .Polarx.Datatypes.Scalar field = 1;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder getFieldOrBuilder() {
      return field_ == null ? com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.getDefaultInstance() : field_;
    }

    public static final int VALUE_FIELD_NUMBER = 2;
    private com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar value_;
    /**
     * <pre>
     * 需要能处理动态参数
     * </pre>
     *
     * <code>required .Polarx.Datatypes.Scalar value = 2;</code>
     * @return Whether the value field is set.
     */
    public boolean hasValue() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * 需要能处理动态参数
     * </pre>
     *
     * <code>required .Polarx.Datatypes.Scalar value = 2;</code>
     * @return The value.
     */
    public com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar getValue() {
      return value_ == null ? com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.getDefaultInstance() : value_;
    }
    /**
     * <pre>
     * 需要能处理动态参数
     * </pre>
     *
     * <code>required .Polarx.Datatypes.Scalar value = 2;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder getValueOrBuilder() {
      return value_ == null ? com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.getDefaultInstance() : value_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasField()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasValue()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getField().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getValue().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getField());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getValue());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getField());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getValue());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr)) {
        return super.equals(obj);
      }
      com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr other = (com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr) obj;

      if (hasField() != other.hasField()) return false;
      if (hasField()) {
        if (!getField()
            .equals(other.getField())) return false;
      }
      if (hasValue() != other.hasValue()) return false;
      if (hasValue()) {
        if (!getValue()
            .equals(other.getValue())) return false;
      }
        return unknownFields.equals(other.unknownFields);
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasField()) {
        hash = (37 * hash) + FIELD_FIELD_NUMBER;
        hash = (53 * hash) + getField().hashCode();
      }
      if (hasValue()) {
        hash = (37 * hash) + VALUE_FIELD_NUMBER;
        hash = (53 * hash) + getValue().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * 单个列条件
     * </pre>
     *
     * Protobuf type {@code Polarx.ExecPlan.KeyExpr}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Polarx.ExecPlan.KeyExpr)
        com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExprOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_KeyExpr_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_KeyExpr_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr.class, com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr.Builder.class);
      }

      // Construct using com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getFieldFieldBuilder();
          getValueFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (fieldBuilder_ == null) {
          field_ = null;
        } else {
          fieldBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (valueBuilder_ == null) {
          value_ = null;
        } else {
          valueBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_KeyExpr_descriptor;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr getDefaultInstanceForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr.getDefaultInstance();
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr build() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr buildPartial() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr result = new com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          if (fieldBuilder_ == null) {
            result.field_ = field_;
          } else {
            result.field_ = fieldBuilder_.build();
          }
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          if (valueBuilder_ == null) {
            result.value_ = value_;
          } else {
            result.value_ = valueBuilder_.build();
          }
          to_bitField0_ |= 0x00000002;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr) {
          return mergeFrom((com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr other) {
        if (other == com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr.getDefaultInstance()) return this;
        if (other.hasField()) {
          mergeField(other.getField());
        }
        if (other.hasValue()) {
          mergeValue(other.getValue());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasField()) {
          return false;
        }
        if (!hasValue()) {
          return false;
        }
        if (!getField().isInitialized()) {
          return false;
        }
          return getValue().isInitialized();
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar field_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder, com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder> fieldBuilder_;
      /**
       * <pre>
       * 需要能处理列名或列id，列id从0开始
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar field = 1;</code>
       * @return Whether the field field is set.
       */
      public boolean hasField() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * 需要能处理列名或列id，列id从0开始
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar field = 1;</code>
       * @return The field.
       */
      public com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar getField() {
        if (fieldBuilder_ == null) {
          return field_ == null ? com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.getDefaultInstance() : field_;
        } else {
          return fieldBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * 需要能处理列名或列id，列id从0开始
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar field = 1;</code>
       */
      public Builder setField(com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar value) {
        if (fieldBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          field_ = value;
          onChanged();
        } else {
          fieldBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * 需要能处理列名或列id，列id从0开始
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar field = 1;</code>
       */
      public Builder setField(
          com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder builderForValue) {
        if (fieldBuilder_ == null) {
          field_ = builderForValue.build();
          onChanged();
        } else {
          fieldBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * 需要能处理列名或列id，列id从0开始
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar field = 1;</code>
       */
      public Builder mergeField(com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar value) {
        if (fieldBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
              field_ != null &&
              field_ != com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.getDefaultInstance()) {
            field_ =
              com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.newBuilder(field_).mergeFrom(value).buildPartial();
          } else {
            field_ = value;
          }
          onChanged();
        } else {
          fieldBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * 需要能处理列名或列id，列id从0开始
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar field = 1;</code>
       */
      public Builder clearField() {
        if (fieldBuilder_ == null) {
          field_ = null;
          onChanged();
        } else {
          fieldBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <pre>
       * 需要能处理列名或列id，列id从0开始
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar field = 1;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder getFieldBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getFieldFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * 需要能处理列名或列id，列id从0开始
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar field = 1;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder getFieldOrBuilder() {
        if (fieldBuilder_ != null) {
          return fieldBuilder_.getMessageOrBuilder();
        } else {
          return field_ == null ?
              com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.getDefaultInstance() : field_;
        }
      }
      /**
       * <pre>
       * 需要能处理列名或列id，列id从0开始
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar field = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder, com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder> 
          getFieldFieldBuilder() {
        if (fieldBuilder_ == null) {
          fieldBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder, com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder>(
                  getField(),
                  getParentForChildren(),
                  isClean());
          field_ = null;
        }
        return fieldBuilder_;
      }

      private com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar value_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder, com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder> valueBuilder_;
      /**
       * <pre>
       * 需要能处理动态参数
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar value = 2;</code>
       * @return Whether the value field is set.
       */
      public boolean hasValue() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * 需要能处理动态参数
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar value = 2;</code>
       * @return The value.
       */
      public com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar getValue() {
        if (valueBuilder_ == null) {
          return value_ == null ? com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.getDefaultInstance() : value_;
        } else {
          return valueBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * 需要能处理动态参数
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar value = 2;</code>
       */
      public Builder setValue(com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar value) {
        if (valueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          value_ = value;
          onChanged();
        } else {
          valueBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * 需要能处理动态参数
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar value = 2;</code>
       */
      public Builder setValue(
          com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder builderForValue) {
        if (valueBuilder_ == null) {
          value_ = builderForValue.build();
          onChanged();
        } else {
          valueBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * 需要能处理动态参数
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar value = 2;</code>
       */
      public Builder mergeValue(com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar value) {
        if (valueBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
              value_ != null &&
              value_ != com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.getDefaultInstance()) {
            value_ =
              com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.newBuilder(value_).mergeFrom(value).buildPartial();
          } else {
            value_ = value;
          }
          onChanged();
        } else {
          valueBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * 需要能处理动态参数
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar value = 2;</code>
       */
      public Builder clearValue() {
        if (valueBuilder_ == null) {
          value_ = null;
          onChanged();
        } else {
          valueBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      /**
       * <pre>
       * 需要能处理动态参数
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar value = 2;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder getValueBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getValueFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * 需要能处理动态参数
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar value = 2;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder getValueOrBuilder() {
        if (valueBuilder_ != null) {
          return valueBuilder_.getMessageOrBuilder();
        } else {
          return value_ == null ?
              com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.getDefaultInstance() : value_;
        }
      }
      /**
       * <pre>
       * 需要能处理动态参数
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar value = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder, com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder> 
          getValueFieldBuilder() {
        if (valueBuilder_ == null) {
          valueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder, com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder>(
                  getValue(),
                  getParentForChildren(),
                  isClean());
          value_ = null;
        }
        return valueBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Polarx.ExecPlan.KeyExpr)
    }

    // @@protoc_insertion_point(class_scope:Polarx.ExecPlan.KeyExpr)
    private static final com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr();
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<KeyExpr>
        PARSER = new com.google.protobuf.AbstractParser<KeyExpr>() {
      @java.lang.Override
      public KeyExpr parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new KeyExpr(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<KeyExpr> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<KeyExpr> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetExprOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Polarx.ExecPlan.GetExpr)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .Polarx.ExecPlan.KeyExpr keys = 1;</code>
     */
    java.util.List<com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr> 
        getKeysList();
    /**
     * <code>repeated .Polarx.ExecPlan.KeyExpr keys = 1;</code>
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr getKeys(int index);
    /**
     * <code>repeated .Polarx.ExecPlan.KeyExpr keys = 1;</code>
     */
    int getKeysCount();
    /**
     * <code>repeated .Polarx.ExecPlan.KeyExpr keys = 1;</code>
     */
    java.util.List<? extends com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExprOrBuilder> 
        getKeysOrBuilderList();
    /**
     * <code>repeated .Polarx.ExecPlan.KeyExpr keys = 1;</code>
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExprOrBuilder getKeysOrBuilder(
        int index);
  }
  /**
   * <pre>
   * 完整的行条件，可包含多个列条件，and关系
   * </pre>
   *
   * Protobuf type {@code Polarx.ExecPlan.GetExpr}
   */
  public  static final class GetExpr extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Polarx.ExecPlan.GetExpr)
      GetExprOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetExpr.newBuilder() to construct.
    private GetExpr(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetExpr() {
      keys_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new GetExpr();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private GetExpr(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                keys_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr>();
                mutable_bitField0_ |= 0x00000001;
              }
              keys_.add(
                  input.readMessage(com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr.PARSER, extensionRegistry));
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          keys_ = java.util.Collections.unmodifiableList(keys_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_GetExpr_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_GetExpr_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.class, com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.Builder.class);
    }

    public static final int KEYS_FIELD_NUMBER = 1;
    private java.util.List<com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr> keys_;
    /**
     * <code>repeated .Polarx.ExecPlan.KeyExpr keys = 1;</code>
     */
    public java.util.List<com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr> getKeysList() {
      return keys_;
    }
    /**
     * <code>repeated .Polarx.ExecPlan.KeyExpr keys = 1;</code>
     */
    public java.util.List<? extends com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExprOrBuilder> 
        getKeysOrBuilderList() {
      return keys_;
    }
    /**
     * <code>repeated .Polarx.ExecPlan.KeyExpr keys = 1;</code>
     */
    public int getKeysCount() {
      return keys_.size();
    }
    /**
     * <code>repeated .Polarx.ExecPlan.KeyExpr keys = 1;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr getKeys(int index) {
      return keys_.get(index);
    }
    /**
     * <code>repeated .Polarx.ExecPlan.KeyExpr keys = 1;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExprOrBuilder getKeysOrBuilder(
        int index) {
      return keys_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      for (int i = 0; i < getKeysCount(); i++) {
        if (!getKeys(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < keys_.size(); i++) {
        output.writeMessage(1, keys_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < keys_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, keys_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr)) {
        return super.equals(obj);
      }
      com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr other = (com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr) obj;

      if (!getKeysList()
          .equals(other.getKeysList())) return false;
        return unknownFields.equals(other.unknownFields);
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getKeysCount() > 0) {
        hash = (37 * hash) + KEYS_FIELD_NUMBER;
        hash = (53 * hash) + getKeysList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * 完整的行条件，可包含多个列条件，and关系
     * </pre>
     *
     * Protobuf type {@code Polarx.ExecPlan.GetExpr}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Polarx.ExecPlan.GetExpr)
        com.mysql.cj.x.protobuf.PolarxExecPlan.GetExprOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_GetExpr_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_GetExpr_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.class, com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.Builder.class);
      }

      // Construct using com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getKeysFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (keysBuilder_ == null) {
          keys_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          keysBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_GetExpr_descriptor;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr getDefaultInstanceForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.getDefaultInstance();
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr build() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr buildPartial() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr result = new com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr(this);
        int from_bitField0_ = bitField0_;
        if (keysBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            keys_ = java.util.Collections.unmodifiableList(keys_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.keys_ = keys_;
        } else {
          result.keys_ = keysBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr) {
          return mergeFrom((com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr other) {
        if (other == com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.getDefaultInstance()) return this;
        if (keysBuilder_ == null) {
          if (!other.keys_.isEmpty()) {
            if (keys_.isEmpty()) {
              keys_ = other.keys_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureKeysIsMutable();
              keys_.addAll(other.keys_);
            }
            onChanged();
          }
        } else {
          if (!other.keys_.isEmpty()) {
            if (keysBuilder_.isEmpty()) {
              keysBuilder_.dispose();
              keysBuilder_ = null;
              keys_ = other.keys_;
              bitField0_ = (bitField0_ & ~0x00000001);
              keysBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getKeysFieldBuilder() : null;
            } else {
              keysBuilder_.addAllMessages(other.keys_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        for (int i = 0; i < getKeysCount(); i++) {
          if (!getKeys(i).isInitialized()) {
            return false;
          }
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr> keys_ =
        java.util.Collections.emptyList();
      private void ensureKeysIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          keys_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr>(keys_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr, com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExprOrBuilder> keysBuilder_;

      /**
       * <code>repeated .Polarx.ExecPlan.KeyExpr keys = 1;</code>
       */
      public java.util.List<com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr> getKeysList() {
        if (keysBuilder_ == null) {
          return java.util.Collections.unmodifiableList(keys_);
        } else {
          return keysBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .Polarx.ExecPlan.KeyExpr keys = 1;</code>
       */
      public int getKeysCount() {
        if (keysBuilder_ == null) {
          return keys_.size();
        } else {
          return keysBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .Polarx.ExecPlan.KeyExpr keys = 1;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr getKeys(int index) {
        if (keysBuilder_ == null) {
          return keys_.get(index);
        } else {
          return keysBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .Polarx.ExecPlan.KeyExpr keys = 1;</code>
       */
      public Builder setKeys(
          int index, com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr value) {
        if (keysBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureKeysIsMutable();
          keys_.set(index, value);
          onChanged();
        } else {
          keysBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .Polarx.ExecPlan.KeyExpr keys = 1;</code>
       */
      public Builder setKeys(
          int index, com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr.Builder builderForValue) {
        if (keysBuilder_ == null) {
          ensureKeysIsMutable();
          keys_.set(index, builderForValue.build());
          onChanged();
        } else {
          keysBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Polarx.ExecPlan.KeyExpr keys = 1;</code>
       */
      public Builder addKeys(com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr value) {
        if (keysBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureKeysIsMutable();
          keys_.add(value);
          onChanged();
        } else {
          keysBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .Polarx.ExecPlan.KeyExpr keys = 1;</code>
       */
      public Builder addKeys(
          int index, com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr value) {
        if (keysBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureKeysIsMutable();
          keys_.add(index, value);
          onChanged();
        } else {
          keysBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .Polarx.ExecPlan.KeyExpr keys = 1;</code>
       */
      public Builder addKeys(
          com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr.Builder builderForValue) {
        if (keysBuilder_ == null) {
          ensureKeysIsMutable();
          keys_.add(builderForValue.build());
          onChanged();
        } else {
          keysBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Polarx.ExecPlan.KeyExpr keys = 1;</code>
       */
      public Builder addKeys(
          int index, com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr.Builder builderForValue) {
        if (keysBuilder_ == null) {
          ensureKeysIsMutable();
          keys_.add(index, builderForValue.build());
          onChanged();
        } else {
          keysBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Polarx.ExecPlan.KeyExpr keys = 1;</code>
       */
      public Builder addAllKeys(
          java.lang.Iterable<? extends com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr> values) {
        if (keysBuilder_ == null) {
          ensureKeysIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, keys_);
          onChanged();
        } else {
          keysBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .Polarx.ExecPlan.KeyExpr keys = 1;</code>
       */
      public Builder clearKeys() {
        if (keysBuilder_ == null) {
          keys_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          keysBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .Polarx.ExecPlan.KeyExpr keys = 1;</code>
       */
      public Builder removeKeys(int index) {
        if (keysBuilder_ == null) {
          ensureKeysIsMutable();
          keys_.remove(index);
          onChanged();
        } else {
          keysBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .Polarx.ExecPlan.KeyExpr keys = 1;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr.Builder getKeysBuilder(
          int index) {
        return getKeysFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .Polarx.ExecPlan.KeyExpr keys = 1;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExprOrBuilder getKeysOrBuilder(
          int index) {
        if (keysBuilder_ == null) {
          return keys_.get(index);  } else {
          return keysBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .Polarx.ExecPlan.KeyExpr keys = 1;</code>
       */
      public java.util.List<? extends com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExprOrBuilder> 
           getKeysOrBuilderList() {
        if (keysBuilder_ != null) {
          return keysBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(keys_);
        }
      }
      /**
       * <code>repeated .Polarx.ExecPlan.KeyExpr keys = 1;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr.Builder addKeysBuilder() {
        return getKeysFieldBuilder().addBuilder(
            com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr.getDefaultInstance());
      }
      /**
       * <code>repeated .Polarx.ExecPlan.KeyExpr keys = 1;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr.Builder addKeysBuilder(
          int index) {
        return getKeysFieldBuilder().addBuilder(
            index, com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr.getDefaultInstance());
      }
      /**
       * <code>repeated .Polarx.ExecPlan.KeyExpr keys = 1;</code>
       */
      public java.util.List<com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr.Builder> 
           getKeysBuilderList() {
        return getKeysFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr, com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExprOrBuilder> 
          getKeysFieldBuilder() {
        if (keysBuilder_ == null) {
          keysBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr, com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExpr.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.KeyExprOrBuilder>(
                  keys_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          keys_ = null;
        }
        return keysBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Polarx.ExecPlan.GetExpr)
    }

    // @@protoc_insertion_point(class_scope:Polarx.ExecPlan.GetExpr)
    private static final com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr();
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<GetExpr>
        PARSER = new com.google.protobuf.AbstractParser<GetExpr>() {
      @java.lang.Override
      public GetExpr parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GetExpr(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<GetExpr> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GetExpr> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetPlanOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Polarx.ExecPlan.GetPlan)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required .Polarx.ExecPlan.TableInfo table_info = 1;</code>
     * @return Whether the tableInfo field is set.
     */
    boolean hasTableInfo();
    /**
     * <code>required .Polarx.ExecPlan.TableInfo table_info = 1;</code>
     * @return The tableInfo.
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo getTableInfo();
    /**
     * <code>required .Polarx.ExecPlan.TableInfo table_info = 1;</code>
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfoOrBuilder getTableInfoOrBuilder();

    /**
     * <pre>
     * 如果没指定，默认走primary
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 2;</code>
     * @return Whether the indexInfo field is set.
     */
    boolean hasIndexInfo();
    /**
     * <pre>
     * 如果没指定，默认走primary
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 2;</code>
     * @return The indexInfo.
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo getIndexInfo();
    /**
     * <pre>
     * 如果没指定，默认走primary
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 2;</code>
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfoOrBuilder getIndexInfoOrBuilder();

    /**
     * <pre>
     * 索引列过滤条件，如果为空就报错，全表扫描走TableScanPlan
     * </pre>
     *
     * <code>repeated .Polarx.ExecPlan.GetExpr keys = 3;</code>
     */
    java.util.List<com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr> 
        getKeysList();
    /**
     * <pre>
     * 索引列过滤条件，如果为空就报错，全表扫描走TableScanPlan
     * </pre>
     *
     * <code>repeated .Polarx.ExecPlan.GetExpr keys = 3;</code>
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr getKeys(int index);
    /**
     * <pre>
     * 索引列过滤条件，如果为空就报错，全表扫描走TableScanPlan
     * </pre>
     *
     * <code>repeated .Polarx.ExecPlan.GetExpr keys = 3;</code>
     */
    int getKeysCount();
    /**
     * <pre>
     * 索引列过滤条件，如果为空就报错，全表扫描走TableScanPlan
     * </pre>
     *
     * <code>repeated .Polarx.ExecPlan.GetExpr keys = 3;</code>
     */
    java.util.List<? extends com.mysql.cj.x.protobuf.PolarxExecPlan.GetExprOrBuilder> 
        getKeysOrBuilderList();
    /**
     * <pre>
     * 索引列过滤条件，如果为空就报错，全表扫描走TableScanPlan
     * </pre>
     *
     * <code>repeated .Polarx.ExecPlan.GetExpr keys = 3;</code>
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.GetExprOrBuilder getKeysOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code Polarx.ExecPlan.GetPlan}
   */
  public  static final class GetPlan extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Polarx.ExecPlan.GetPlan)
      GetPlanOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetPlan.newBuilder() to construct.
    private GetPlan(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetPlan() {
      keys_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new GetPlan();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private GetPlan(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) != 0)) {
                subBuilder = tableInfo_.toBuilder();
              }
              tableInfo_ = input.readMessage(com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(tableInfo_);
                tableInfo_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) != 0)) {
                subBuilder = indexInfo_.toBuilder();
              }
              indexInfo_ = input.readMessage(com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(indexInfo_);
                indexInfo_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000004) != 0)) {
                keys_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr>();
                mutable_bitField0_ |= 0x00000004;
              }
              keys_.add(
                  input.readMessage(com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.PARSER, extensionRegistry));
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000004) != 0)) {
          keys_ = java.util.Collections.unmodifiableList(keys_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_GetPlan_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_GetPlan_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan.class, com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan.Builder.class);
    }

    private int bitField0_;
    public static final int TABLE_INFO_FIELD_NUMBER = 1;
    private com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo tableInfo_;
    /**
     * <code>required .Polarx.ExecPlan.TableInfo table_info = 1;</code>
     * @return Whether the tableInfo field is set.
     */
    public boolean hasTableInfo() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required .Polarx.ExecPlan.TableInfo table_info = 1;</code>
     * @return The tableInfo.
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo getTableInfo() {
      return tableInfo_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.getDefaultInstance() : tableInfo_;
    }
    /**
     * <code>required .Polarx.ExecPlan.TableInfo table_info = 1;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfoOrBuilder getTableInfoOrBuilder() {
      return tableInfo_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.getDefaultInstance() : tableInfo_;
    }

    public static final int INDEX_INFO_FIELD_NUMBER = 2;
    private com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo indexInfo_;
    /**
     * <pre>
     * 如果没指定，默认走primary
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 2;</code>
     * @return Whether the indexInfo field is set.
     */
    public boolean hasIndexInfo() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * 如果没指定，默认走primary
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 2;</code>
     * @return The indexInfo.
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo getIndexInfo() {
      return indexInfo_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.getDefaultInstance() : indexInfo_;
    }
    /**
     * <pre>
     * 如果没指定，默认走primary
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 2;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfoOrBuilder getIndexInfoOrBuilder() {
      return indexInfo_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.getDefaultInstance() : indexInfo_;
    }

    public static final int KEYS_FIELD_NUMBER = 3;
    private java.util.List<com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr> keys_;
    /**
     * <pre>
     * 索引列过滤条件，如果为空就报错，全表扫描走TableScanPlan
     * </pre>
     *
     * <code>repeated .Polarx.ExecPlan.GetExpr keys = 3;</code>
     */
    public java.util.List<com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr> getKeysList() {
      return keys_;
    }
    /**
     * <pre>
     * 索引列过滤条件，如果为空就报错，全表扫描走TableScanPlan
     * </pre>
     *
     * <code>repeated .Polarx.ExecPlan.GetExpr keys = 3;</code>
     */
    public java.util.List<? extends com.mysql.cj.x.protobuf.PolarxExecPlan.GetExprOrBuilder> 
        getKeysOrBuilderList() {
      return keys_;
    }
    /**
     * <pre>
     * 索引列过滤条件，如果为空就报错，全表扫描走TableScanPlan
     * </pre>
     *
     * <code>repeated .Polarx.ExecPlan.GetExpr keys = 3;</code>
     */
    public int getKeysCount() {
      return keys_.size();
    }
    /**
     * <pre>
     * 索引列过滤条件，如果为空就报错，全表扫描走TableScanPlan
     * </pre>
     *
     * <code>repeated .Polarx.ExecPlan.GetExpr keys = 3;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr getKeys(int index) {
      return keys_.get(index);
    }
    /**
     * <pre>
     * 索引列过滤条件，如果为空就报错，全表扫描走TableScanPlan
     * </pre>
     *
     * <code>repeated .Polarx.ExecPlan.GetExpr keys = 3;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.GetExprOrBuilder getKeysOrBuilder(
        int index) {
      return keys_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasTableInfo()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getTableInfo().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasIndexInfo()) {
        if (!getIndexInfo().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getKeysCount(); i++) {
        if (!getKeys(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getTableInfo());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getIndexInfo());
      }
      for (int i = 0; i < keys_.size(); i++) {
        output.writeMessage(3, keys_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getTableInfo());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getIndexInfo());
      }
      for (int i = 0; i < keys_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, keys_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan)) {
        return super.equals(obj);
      }
      com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan other = (com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan) obj;

      if (hasTableInfo() != other.hasTableInfo()) return false;
      if (hasTableInfo()) {
        if (!getTableInfo()
            .equals(other.getTableInfo())) return false;
      }
      if (hasIndexInfo() != other.hasIndexInfo()) return false;
      if (hasIndexInfo()) {
        if (!getIndexInfo()
            .equals(other.getIndexInfo())) return false;
      }
      if (!getKeysList()
          .equals(other.getKeysList())) return false;
        return unknownFields.equals(other.unknownFields);
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasTableInfo()) {
        hash = (37 * hash) + TABLE_INFO_FIELD_NUMBER;
        hash = (53 * hash) + getTableInfo().hashCode();
      }
      if (hasIndexInfo()) {
        hash = (37 * hash) + INDEX_INFO_FIELD_NUMBER;
        hash = (53 * hash) + getIndexInfo().hashCode();
      }
      if (getKeysCount() > 0) {
        hash = (37 * hash) + KEYS_FIELD_NUMBER;
        hash = (53 * hash) + getKeysList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Polarx.ExecPlan.GetPlan}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Polarx.ExecPlan.GetPlan)
        com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlanOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_GetPlan_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_GetPlan_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan.class, com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan.Builder.class);
      }

      // Construct using com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getTableInfoFieldBuilder();
          getIndexInfoFieldBuilder();
          getKeysFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (tableInfoBuilder_ == null) {
          tableInfo_ = null;
        } else {
          tableInfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (indexInfoBuilder_ == null) {
          indexInfo_ = null;
        } else {
          indexInfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        if (keysBuilder_ == null) {
          keys_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
        } else {
          keysBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_GetPlan_descriptor;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan getDefaultInstanceForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan.getDefaultInstance();
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan build() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan buildPartial() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan result = new com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          if (tableInfoBuilder_ == null) {
            result.tableInfo_ = tableInfo_;
          } else {
            result.tableInfo_ = tableInfoBuilder_.build();
          }
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          if (indexInfoBuilder_ == null) {
            result.indexInfo_ = indexInfo_;
          } else {
            result.indexInfo_ = indexInfoBuilder_.build();
          }
          to_bitField0_ |= 0x00000002;
        }
        if (keysBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0)) {
            keys_ = java.util.Collections.unmodifiableList(keys_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.keys_ = keys_;
        } else {
          result.keys_ = keysBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan) {
          return mergeFrom((com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan other) {
        if (other == com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan.getDefaultInstance()) return this;
        if (other.hasTableInfo()) {
          mergeTableInfo(other.getTableInfo());
        }
        if (other.hasIndexInfo()) {
          mergeIndexInfo(other.getIndexInfo());
        }
        if (keysBuilder_ == null) {
          if (!other.keys_.isEmpty()) {
            if (keys_.isEmpty()) {
              keys_ = other.keys_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureKeysIsMutable();
              keys_.addAll(other.keys_);
            }
            onChanged();
          }
        } else {
          if (!other.keys_.isEmpty()) {
            if (keysBuilder_.isEmpty()) {
              keysBuilder_.dispose();
              keysBuilder_ = null;
              keys_ = other.keys_;
              bitField0_ = (bitField0_ & ~0x00000004);
              keysBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getKeysFieldBuilder() : null;
            } else {
              keysBuilder_.addAllMessages(other.keys_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasTableInfo()) {
          return false;
        }
        if (!getTableInfo().isInitialized()) {
          return false;
        }
        if (hasIndexInfo()) {
          if (!getIndexInfo().isInitialized()) {
            return false;
          }
        }
        for (int i = 0; i < getKeysCount(); i++) {
          if (!getKeys(i).isInitialized()) {
            return false;
          }
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo tableInfo_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo, com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfoOrBuilder> tableInfoBuilder_;
      /**
       * <code>required .Polarx.ExecPlan.TableInfo table_info = 1;</code>
       * @return Whether the tableInfo field is set.
       */
      public boolean hasTableInfo() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required .Polarx.ExecPlan.TableInfo table_info = 1;</code>
       * @return The tableInfo.
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo getTableInfo() {
        if (tableInfoBuilder_ == null) {
          return tableInfo_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.getDefaultInstance() : tableInfo_;
        } else {
          return tableInfoBuilder_.getMessage();
        }
      }
      /**
       * <code>required .Polarx.ExecPlan.TableInfo table_info = 1;</code>
       */
      public Builder setTableInfo(com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo value) {
        if (tableInfoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          tableInfo_ = value;
          onChanged();
        } else {
          tableInfoBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .Polarx.ExecPlan.TableInfo table_info = 1;</code>
       */
      public Builder setTableInfo(
          com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.Builder builderForValue) {
        if (tableInfoBuilder_ == null) {
          tableInfo_ = builderForValue.build();
          onChanged();
        } else {
          tableInfoBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .Polarx.ExecPlan.TableInfo table_info = 1;</code>
       */
      public Builder mergeTableInfo(com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo value) {
        if (tableInfoBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
              tableInfo_ != null &&
              tableInfo_ != com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.getDefaultInstance()) {
            tableInfo_ =
              com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.newBuilder(tableInfo_).mergeFrom(value).buildPartial();
          } else {
            tableInfo_ = value;
          }
          onChanged();
        } else {
          tableInfoBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .Polarx.ExecPlan.TableInfo table_info = 1;</code>
       */
      public Builder clearTableInfo() {
        if (tableInfoBuilder_ == null) {
          tableInfo_ = null;
          onChanged();
        } else {
          tableInfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <code>required .Polarx.ExecPlan.TableInfo table_info = 1;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.Builder getTableInfoBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getTableInfoFieldBuilder().getBuilder();
      }
      /**
       * <code>required .Polarx.ExecPlan.TableInfo table_info = 1;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfoOrBuilder getTableInfoOrBuilder() {
        if (tableInfoBuilder_ != null) {
          return tableInfoBuilder_.getMessageOrBuilder();
        } else {
          return tableInfo_ == null ?
              com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.getDefaultInstance() : tableInfo_;
        }
      }
      /**
       * <code>required .Polarx.ExecPlan.TableInfo table_info = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo, com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfoOrBuilder> 
          getTableInfoFieldBuilder() {
        if (tableInfoBuilder_ == null) {
          tableInfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo, com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfoOrBuilder>(
                  getTableInfo(),
                  getParentForChildren(),
                  isClean());
          tableInfo_ = null;
        }
        return tableInfoBuilder_;
      }

      private com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo indexInfo_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo, com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfoOrBuilder> indexInfoBuilder_;
      /**
       * <pre>
       * 如果没指定，默认走primary
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 2;</code>
       * @return Whether the indexInfo field is set.
       */
      public boolean hasIndexInfo() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * 如果没指定，默认走primary
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 2;</code>
       * @return The indexInfo.
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo getIndexInfo() {
        if (indexInfoBuilder_ == null) {
          return indexInfo_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.getDefaultInstance() : indexInfo_;
        } else {
          return indexInfoBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * 如果没指定，默认走primary
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 2;</code>
       */
      public Builder setIndexInfo(com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo value) {
        if (indexInfoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          indexInfo_ = value;
          onChanged();
        } else {
          indexInfoBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * 如果没指定，默认走primary
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 2;</code>
       */
      public Builder setIndexInfo(
          com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.Builder builderForValue) {
        if (indexInfoBuilder_ == null) {
          indexInfo_ = builderForValue.build();
          onChanged();
        } else {
          indexInfoBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * 如果没指定，默认走primary
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 2;</code>
       */
      public Builder mergeIndexInfo(com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo value) {
        if (indexInfoBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
              indexInfo_ != null &&
              indexInfo_ != com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.getDefaultInstance()) {
            indexInfo_ =
              com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.newBuilder(indexInfo_).mergeFrom(value).buildPartial();
          } else {
            indexInfo_ = value;
          }
          onChanged();
        } else {
          indexInfoBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * 如果没指定，默认走primary
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 2;</code>
       */
      public Builder clearIndexInfo() {
        if (indexInfoBuilder_ == null) {
          indexInfo_ = null;
          onChanged();
        } else {
          indexInfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      /**
       * <pre>
       * 如果没指定，默认走primary
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 2;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.Builder getIndexInfoBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getIndexInfoFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * 如果没指定，默认走primary
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 2;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfoOrBuilder getIndexInfoOrBuilder() {
        if (indexInfoBuilder_ != null) {
          return indexInfoBuilder_.getMessageOrBuilder();
        } else {
          return indexInfo_ == null ?
              com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.getDefaultInstance() : indexInfo_;
        }
      }
      /**
       * <pre>
       * 如果没指定，默认走primary
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo, com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfoOrBuilder> 
          getIndexInfoFieldBuilder() {
        if (indexInfoBuilder_ == null) {
          indexInfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo, com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfoOrBuilder>(
                  getIndexInfo(),
                  getParentForChildren(),
                  isClean());
          indexInfo_ = null;
        }
        return indexInfoBuilder_;
      }

      private java.util.List<com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr> keys_ =
        java.util.Collections.emptyList();
      private void ensureKeysIsMutable() {
        if (!((bitField0_ & 0x00000004) != 0)) {
          keys_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr>(keys_);
          bitField0_ |= 0x00000004;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr, com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.GetExprOrBuilder> keysBuilder_;

      /**
       * <pre>
       * 索引列过滤条件，如果为空就报错，全表扫描走TableScanPlan
       * </pre>
       *
       * <code>repeated .Polarx.ExecPlan.GetExpr keys = 3;</code>
       */
      public java.util.List<com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr> getKeysList() {
        if (keysBuilder_ == null) {
          return java.util.Collections.unmodifiableList(keys_);
        } else {
          return keysBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * 索引列过滤条件，如果为空就报错，全表扫描走TableScanPlan
       * </pre>
       *
       * <code>repeated .Polarx.ExecPlan.GetExpr keys = 3;</code>
       */
      public int getKeysCount() {
        if (keysBuilder_ == null) {
          return keys_.size();
        } else {
          return keysBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * 索引列过滤条件，如果为空就报错，全表扫描走TableScanPlan
       * </pre>
       *
       * <code>repeated .Polarx.ExecPlan.GetExpr keys = 3;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr getKeys(int index) {
        if (keysBuilder_ == null) {
          return keys_.get(index);
        } else {
          return keysBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * 索引列过滤条件，如果为空就报错，全表扫描走TableScanPlan
       * </pre>
       *
       * <code>repeated .Polarx.ExecPlan.GetExpr keys = 3;</code>
       */
      public Builder setKeys(
          int index, com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr value) {
        if (keysBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureKeysIsMutable();
          keys_.set(index, value);
          onChanged();
        } else {
          keysBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * 索引列过滤条件，如果为空就报错，全表扫描走TableScanPlan
       * </pre>
       *
       * <code>repeated .Polarx.ExecPlan.GetExpr keys = 3;</code>
       */
      public Builder setKeys(
          int index, com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.Builder builderForValue) {
        if (keysBuilder_ == null) {
          ensureKeysIsMutable();
          keys_.set(index, builderForValue.build());
          onChanged();
        } else {
          keysBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * 索引列过滤条件，如果为空就报错，全表扫描走TableScanPlan
       * </pre>
       *
       * <code>repeated .Polarx.ExecPlan.GetExpr keys = 3;</code>
       */
      public Builder addKeys(com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr value) {
        if (keysBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureKeysIsMutable();
          keys_.add(value);
          onChanged();
        } else {
          keysBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * 索引列过滤条件，如果为空就报错，全表扫描走TableScanPlan
       * </pre>
       *
       * <code>repeated .Polarx.ExecPlan.GetExpr keys = 3;</code>
       */
      public Builder addKeys(
          int index, com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr value) {
        if (keysBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureKeysIsMutable();
          keys_.add(index, value);
          onChanged();
        } else {
          keysBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * 索引列过滤条件，如果为空就报错，全表扫描走TableScanPlan
       * </pre>
       *
       * <code>repeated .Polarx.ExecPlan.GetExpr keys = 3;</code>
       */
      public Builder addKeys(
          com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.Builder builderForValue) {
        if (keysBuilder_ == null) {
          ensureKeysIsMutable();
          keys_.add(builderForValue.build());
          onChanged();
        } else {
          keysBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * 索引列过滤条件，如果为空就报错，全表扫描走TableScanPlan
       * </pre>
       *
       * <code>repeated .Polarx.ExecPlan.GetExpr keys = 3;</code>
       */
      public Builder addKeys(
          int index, com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.Builder builderForValue) {
        if (keysBuilder_ == null) {
          ensureKeysIsMutable();
          keys_.add(index, builderForValue.build());
          onChanged();
        } else {
          keysBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * 索引列过滤条件，如果为空就报错，全表扫描走TableScanPlan
       * </pre>
       *
       * <code>repeated .Polarx.ExecPlan.GetExpr keys = 3;</code>
       */
      public Builder addAllKeys(
          java.lang.Iterable<? extends com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr> values) {
        if (keysBuilder_ == null) {
          ensureKeysIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, keys_);
          onChanged();
        } else {
          keysBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * 索引列过滤条件，如果为空就报错，全表扫描走TableScanPlan
       * </pre>
       *
       * <code>repeated .Polarx.ExecPlan.GetExpr keys = 3;</code>
       */
      public Builder clearKeys() {
        if (keysBuilder_ == null) {
          keys_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          keysBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * 索引列过滤条件，如果为空就报错，全表扫描走TableScanPlan
       * </pre>
       *
       * <code>repeated .Polarx.ExecPlan.GetExpr keys = 3;</code>
       */
      public Builder removeKeys(int index) {
        if (keysBuilder_ == null) {
          ensureKeysIsMutable();
          keys_.remove(index);
          onChanged();
        } else {
          keysBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * 索引列过滤条件，如果为空就报错，全表扫描走TableScanPlan
       * </pre>
       *
       * <code>repeated .Polarx.ExecPlan.GetExpr keys = 3;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.Builder getKeysBuilder(
          int index) {
        return getKeysFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * 索引列过滤条件，如果为空就报错，全表扫描走TableScanPlan
       * </pre>
       *
       * <code>repeated .Polarx.ExecPlan.GetExpr keys = 3;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.GetExprOrBuilder getKeysOrBuilder(
          int index) {
        if (keysBuilder_ == null) {
          return keys_.get(index);  } else {
          return keysBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * 索引列过滤条件，如果为空就报错，全表扫描走TableScanPlan
       * </pre>
       *
       * <code>repeated .Polarx.ExecPlan.GetExpr keys = 3;</code>
       */
      public java.util.List<? extends com.mysql.cj.x.protobuf.PolarxExecPlan.GetExprOrBuilder> 
           getKeysOrBuilderList() {
        if (keysBuilder_ != null) {
          return keysBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(keys_);
        }
      }
      /**
       * <pre>
       * 索引列过滤条件，如果为空就报错，全表扫描走TableScanPlan
       * </pre>
       *
       * <code>repeated .Polarx.ExecPlan.GetExpr keys = 3;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.Builder addKeysBuilder() {
        return getKeysFieldBuilder().addBuilder(
            com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.getDefaultInstance());
      }
      /**
       * <pre>
       * 索引列过滤条件，如果为空就报错，全表扫描走TableScanPlan
       * </pre>
       *
       * <code>repeated .Polarx.ExecPlan.GetExpr keys = 3;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.Builder addKeysBuilder(
          int index) {
        return getKeysFieldBuilder().addBuilder(
            index, com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.getDefaultInstance());
      }
      /**
       * <pre>
       * 索引列过滤条件，如果为空就报错，全表扫描走TableScanPlan
       * </pre>
       *
       * <code>repeated .Polarx.ExecPlan.GetExpr keys = 3;</code>
       */
      public java.util.List<com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.Builder> 
           getKeysBuilderList() {
        return getKeysFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr, com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.GetExprOrBuilder> 
          getKeysFieldBuilder() {
        if (keysBuilder_ == null) {
          keysBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr, com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.GetExprOrBuilder>(
                  keys_,
                  ((bitField0_ & 0x00000004) != 0),
                  getParentForChildren(),
                  isClean());
          keys_ = null;
        }
        return keysBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Polarx.ExecPlan.GetPlan)
    }

    // @@protoc_insertion_point(class_scope:Polarx.ExecPlan.GetPlan)
    private static final com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan();
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<GetPlan>
        PARSER = new com.google.protobuf.AbstractParser<GetPlan>() {
      @java.lang.Override
      public GetPlan parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GetPlan(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<GetPlan> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GetPlan> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TableScanPlanOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Polarx.ExecPlan.TableScanPlan)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required .Polarx.ExecPlan.TableInfo table_info = 1;</code>
     * @return Whether the tableInfo field is set.
     */
    boolean hasTableInfo();
    /**
     * <code>required .Polarx.ExecPlan.TableInfo table_info = 1;</code>
     * @return The tableInfo.
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo getTableInfo();
    /**
     * <code>required .Polarx.ExecPlan.TableInfo table_info = 1;</code>
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfoOrBuilder getTableInfoOrBuilder();

    /**
     * <pre>
     * 如果没指定，默认走primary
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 2;</code>
     * @return Whether the indexInfo field is set.
     */
    boolean hasIndexInfo();
    /**
     * <pre>
     * 如果没指定，默认走primary
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 2;</code>
     * @return The indexInfo.
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo getIndexInfo();
    /**
     * <pre>
     * 如果没指定，默认走primary
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 2;</code>
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfoOrBuilder getIndexInfoOrBuilder();

    /**
     * <pre>
     * 扫描顺序，默认正向
     * </pre>
     *
     * <code>optional bool reverse = 3;</code>
     * @return Whether the reverse field is set.
     */
    boolean hasReverse();
    /**
     * <pre>
     * 扫描顺序，默认正向
     * </pre>
     *
     * <code>optional bool reverse = 3;</code>
     * @return The reverse.
     */
    boolean getReverse();
  }
  /**
   * Protobuf type {@code Polarx.ExecPlan.TableScanPlan}
   */
  public  static final class TableScanPlan extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Polarx.ExecPlan.TableScanPlan)
      TableScanPlanOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TableScanPlan.newBuilder() to construct.
    private TableScanPlan(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TableScanPlan() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new TableScanPlan();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private TableScanPlan(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) != 0)) {
                subBuilder = tableInfo_.toBuilder();
              }
              tableInfo_ = input.readMessage(com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(tableInfo_);
                tableInfo_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) != 0)) {
                subBuilder = indexInfo_.toBuilder();
              }
              indexInfo_ = input.readMessage(com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(indexInfo_);
                indexInfo_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              reverse_ = input.readBool();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_TableScanPlan_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_TableScanPlan_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan.class, com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan.Builder.class);
    }

    private int bitField0_;
    public static final int TABLE_INFO_FIELD_NUMBER = 1;
    private com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo tableInfo_;
    /**
     * <code>required .Polarx.ExecPlan.TableInfo table_info = 1;</code>
     * @return Whether the tableInfo field is set.
     */
    public boolean hasTableInfo() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required .Polarx.ExecPlan.TableInfo table_info = 1;</code>
     * @return The tableInfo.
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo getTableInfo() {
      return tableInfo_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.getDefaultInstance() : tableInfo_;
    }
    /**
     * <code>required .Polarx.ExecPlan.TableInfo table_info = 1;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfoOrBuilder getTableInfoOrBuilder() {
      return tableInfo_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.getDefaultInstance() : tableInfo_;
    }

    public static final int INDEX_INFO_FIELD_NUMBER = 2;
    private com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo indexInfo_;
    /**
     * <pre>
     * 如果没指定，默认走primary
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 2;</code>
     * @return Whether the indexInfo field is set.
     */
    public boolean hasIndexInfo() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * 如果没指定，默认走primary
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 2;</code>
     * @return The indexInfo.
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo getIndexInfo() {
      return indexInfo_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.getDefaultInstance() : indexInfo_;
    }
    /**
     * <pre>
     * 如果没指定，默认走primary
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 2;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfoOrBuilder getIndexInfoOrBuilder() {
      return indexInfo_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.getDefaultInstance() : indexInfo_;
    }

    public static final int REVERSE_FIELD_NUMBER = 3;
    private boolean reverse_;
    /**
     * <pre>
     * 扫描顺序，默认正向
     * </pre>
     *
     * <code>optional bool reverse = 3;</code>
     * @return Whether the reverse field is set.
     */
    public boolean hasReverse() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * 扫描顺序，默认正向
     * </pre>
     *
     * <code>optional bool reverse = 3;</code>
     * @return The reverse.
     */
    public boolean getReverse() {
      return reverse_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasTableInfo()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getTableInfo().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasIndexInfo()) {
        if (!getIndexInfo().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getTableInfo());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getIndexInfo());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeBool(3, reverse_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getTableInfo());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getIndexInfo());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, reverse_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan)) {
        return super.equals(obj);
      }
      com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan other = (com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan) obj;

      if (hasTableInfo() != other.hasTableInfo()) return false;
      if (hasTableInfo()) {
        if (!getTableInfo()
            .equals(other.getTableInfo())) return false;
      }
      if (hasIndexInfo() != other.hasIndexInfo()) return false;
      if (hasIndexInfo()) {
        if (!getIndexInfo()
            .equals(other.getIndexInfo())) return false;
      }
      if (hasReverse() != other.hasReverse()) return false;
      if (hasReverse()) {
        if (getReverse()
            != other.getReverse()) return false;
      }
        return unknownFields.equals(other.unknownFields);
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasTableInfo()) {
        hash = (37 * hash) + TABLE_INFO_FIELD_NUMBER;
        hash = (53 * hash) + getTableInfo().hashCode();
      }
      if (hasIndexInfo()) {
        hash = (37 * hash) + INDEX_INFO_FIELD_NUMBER;
        hash = (53 * hash) + getIndexInfo().hashCode();
      }
      if (hasReverse()) {
        hash = (37 * hash) + REVERSE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getReverse());
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Polarx.ExecPlan.TableScanPlan}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Polarx.ExecPlan.TableScanPlan)
        com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlanOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_TableScanPlan_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_TableScanPlan_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan.class, com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan.Builder.class);
      }

      // Construct using com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getTableInfoFieldBuilder();
          getIndexInfoFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (tableInfoBuilder_ == null) {
          tableInfo_ = null;
        } else {
          tableInfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (indexInfoBuilder_ == null) {
          indexInfo_ = null;
        } else {
          indexInfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        reverse_ = false;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_TableScanPlan_descriptor;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan getDefaultInstanceForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan.getDefaultInstance();
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan build() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan buildPartial() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan result = new com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          if (tableInfoBuilder_ == null) {
            result.tableInfo_ = tableInfo_;
          } else {
            result.tableInfo_ = tableInfoBuilder_.build();
          }
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          if (indexInfoBuilder_ == null) {
            result.indexInfo_ = indexInfo_;
          } else {
            result.indexInfo_ = indexInfoBuilder_.build();
          }
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.reverse_ = reverse_;
          to_bitField0_ |= 0x00000004;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan) {
          return mergeFrom((com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan other) {
        if (other == com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan.getDefaultInstance()) return this;
        if (other.hasTableInfo()) {
          mergeTableInfo(other.getTableInfo());
        }
        if (other.hasIndexInfo()) {
          mergeIndexInfo(other.getIndexInfo());
        }
        if (other.hasReverse()) {
          setReverse(other.getReverse());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasTableInfo()) {
          return false;
        }
        if (!getTableInfo().isInitialized()) {
          return false;
        }
        if (hasIndexInfo()) {
            return getIndexInfo().isInitialized();
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo tableInfo_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo, com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfoOrBuilder> tableInfoBuilder_;
      /**
       * <code>required .Polarx.ExecPlan.TableInfo table_info = 1;</code>
       * @return Whether the tableInfo field is set.
       */
      public boolean hasTableInfo() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required .Polarx.ExecPlan.TableInfo table_info = 1;</code>
       * @return The tableInfo.
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo getTableInfo() {
        if (tableInfoBuilder_ == null) {
          return tableInfo_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.getDefaultInstance() : tableInfo_;
        } else {
          return tableInfoBuilder_.getMessage();
        }
      }
      /**
       * <code>required .Polarx.ExecPlan.TableInfo table_info = 1;</code>
       */
      public Builder setTableInfo(com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo value) {
        if (tableInfoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          tableInfo_ = value;
          onChanged();
        } else {
          tableInfoBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .Polarx.ExecPlan.TableInfo table_info = 1;</code>
       */
      public Builder setTableInfo(
          com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.Builder builderForValue) {
        if (tableInfoBuilder_ == null) {
          tableInfo_ = builderForValue.build();
          onChanged();
        } else {
          tableInfoBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .Polarx.ExecPlan.TableInfo table_info = 1;</code>
       */
      public Builder mergeTableInfo(com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo value) {
        if (tableInfoBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
              tableInfo_ != null &&
              tableInfo_ != com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.getDefaultInstance()) {
            tableInfo_ =
              com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.newBuilder(tableInfo_).mergeFrom(value).buildPartial();
          } else {
            tableInfo_ = value;
          }
          onChanged();
        } else {
          tableInfoBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .Polarx.ExecPlan.TableInfo table_info = 1;</code>
       */
      public Builder clearTableInfo() {
        if (tableInfoBuilder_ == null) {
          tableInfo_ = null;
          onChanged();
        } else {
          tableInfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <code>required .Polarx.ExecPlan.TableInfo table_info = 1;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.Builder getTableInfoBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getTableInfoFieldBuilder().getBuilder();
      }
      /**
       * <code>required .Polarx.ExecPlan.TableInfo table_info = 1;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfoOrBuilder getTableInfoOrBuilder() {
        if (tableInfoBuilder_ != null) {
          return tableInfoBuilder_.getMessageOrBuilder();
        } else {
          return tableInfo_ == null ?
              com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.getDefaultInstance() : tableInfo_;
        }
      }
      /**
       * <code>required .Polarx.ExecPlan.TableInfo table_info = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo, com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfoOrBuilder> 
          getTableInfoFieldBuilder() {
        if (tableInfoBuilder_ == null) {
          tableInfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo, com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfoOrBuilder>(
                  getTableInfo(),
                  getParentForChildren(),
                  isClean());
          tableInfo_ = null;
        }
        return tableInfoBuilder_;
      }

      private com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo indexInfo_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo, com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfoOrBuilder> indexInfoBuilder_;
      /**
       * <pre>
       * 如果没指定，默认走primary
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 2;</code>
       * @return Whether the indexInfo field is set.
       */
      public boolean hasIndexInfo() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * 如果没指定，默认走primary
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 2;</code>
       * @return The indexInfo.
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo getIndexInfo() {
        if (indexInfoBuilder_ == null) {
          return indexInfo_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.getDefaultInstance() : indexInfo_;
        } else {
          return indexInfoBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * 如果没指定，默认走primary
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 2;</code>
       */
      public Builder setIndexInfo(com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo value) {
        if (indexInfoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          indexInfo_ = value;
          onChanged();
        } else {
          indexInfoBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * 如果没指定，默认走primary
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 2;</code>
       */
      public Builder setIndexInfo(
          com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.Builder builderForValue) {
        if (indexInfoBuilder_ == null) {
          indexInfo_ = builderForValue.build();
          onChanged();
        } else {
          indexInfoBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * 如果没指定，默认走primary
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 2;</code>
       */
      public Builder mergeIndexInfo(com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo value) {
        if (indexInfoBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
              indexInfo_ != null &&
              indexInfo_ != com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.getDefaultInstance()) {
            indexInfo_ =
              com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.newBuilder(indexInfo_).mergeFrom(value).buildPartial();
          } else {
            indexInfo_ = value;
          }
          onChanged();
        } else {
          indexInfoBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * 如果没指定，默认走primary
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 2;</code>
       */
      public Builder clearIndexInfo() {
        if (indexInfoBuilder_ == null) {
          indexInfo_ = null;
          onChanged();
        } else {
          indexInfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      /**
       * <pre>
       * 如果没指定，默认走primary
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 2;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.Builder getIndexInfoBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getIndexInfoFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * 如果没指定，默认走primary
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 2;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfoOrBuilder getIndexInfoOrBuilder() {
        if (indexInfoBuilder_ != null) {
          return indexInfoBuilder_.getMessageOrBuilder();
        } else {
          return indexInfo_ == null ?
              com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.getDefaultInstance() : indexInfo_;
        }
      }
      /**
       * <pre>
       * 如果没指定，默认走primary
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo, com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfoOrBuilder> 
          getIndexInfoFieldBuilder() {
        if (indexInfoBuilder_ == null) {
          indexInfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo, com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfoOrBuilder>(
                  getIndexInfo(),
                  getParentForChildren(),
                  isClean());
          indexInfo_ = null;
        }
        return indexInfoBuilder_;
      }

      private boolean reverse_ ;
      /**
       * <pre>
       * 扫描顺序，默认正向
       * </pre>
       *
       * <code>optional bool reverse = 3;</code>
       * @return Whether the reverse field is set.
       */
      public boolean hasReverse() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * 扫描顺序，默认正向
       * </pre>
       *
       * <code>optional bool reverse = 3;</code>
       * @return The reverse.
       */
      public boolean getReverse() {
        return reverse_;
      }
      /**
       * <pre>
       * 扫描顺序，默认正向
       * </pre>
       *
       * <code>optional bool reverse = 3;</code>
       * @param value The reverse to set.
       * @return This builder for chaining.
       */
      public Builder setReverse(boolean value) {
        bitField0_ |= 0x00000004;
        reverse_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 扫描顺序，默认正向
       * </pre>
       *
       * <code>optional bool reverse = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearReverse() {
        bitField0_ = (bitField0_ & ~0x00000004);
        reverse_ = false;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Polarx.ExecPlan.TableScanPlan)
    }

    // @@protoc_insertion_point(class_scope:Polarx.ExecPlan.TableScanPlan)
    private static final com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan();
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<TableScanPlan>
        PARSER = new com.google.protobuf.AbstractParser<TableScanPlan>() {
      @java.lang.Override
      public TableScanPlan parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new TableScanPlan(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<TableScanPlan> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<TableScanPlan> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface KeyOnlyRangeScanOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Polarx.ExecPlan.KeyOnlyRangeScan)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * 读取快照，只有作为 top plan 时填写
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.Transaction snapshot = 1;</code>
     * @return Whether the snapshot field is set.
     */
    boolean hasSnapshot();
    /**
     * <pre>
     * 读取快照，只有作为 top plan 时填写
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.Transaction snapshot = 1;</code>
     * @return The snapshot.
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction getSnapshot();
    /**
     * <pre>
     * 读取快照，只有作为 top plan 时填写
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.Transaction snapshot = 1;</code>
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.TransactionOrBuilder getSnapshotOrBuilder();

    /**
     * <pre>
     * 读取的目标 table
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.TableInfo table_info = 3;</code>
     * @return Whether the tableInfo field is set.
     */
    boolean hasTableInfo();
    /**
     * <pre>
     * 读取的目标 table
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.TableInfo table_info = 3;</code>
     * @return The tableInfo.
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo getTableInfo();
    /**
     * <pre>
     * 读取的目标 table
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.TableInfo table_info = 3;</code>
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfoOrBuilder getTableInfoOrBuilder();

    /**
     * <pre>
     * 读取的目标 index
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 4;</code>
     * @return Whether the indexInfo field is set.
     */
    boolean hasIndexInfo();
    /**
     * <pre>
     * 读取的目标 index
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 4;</code>
     * @return The indexInfo.
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo getIndexInfo();
    /**
     * <pre>
     * 读取的目标 index
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 4;</code>
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfoOrBuilder getIndexInfoOrBuilder();

    /**
     * <code>optional .Polarx.ExecPlan.GetExpr key = 5;</code>
     * @return Whether the key field is set.
     */
    boolean hasKey();
    /**
     * <code>optional .Polarx.ExecPlan.GetExpr key = 5;</code>
     * @return The key.
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr getKey();
    /**
     * <code>optional .Polarx.ExecPlan.GetExpr key = 5;</code>
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.GetExprOrBuilder getKeyOrBuilder();

    /**
     * <pre>
     * end 条件，可选
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.GetExpr end_key = 6;</code>
     * @return Whether the endKey field is set.
     */
    boolean hasEndKey();
    /**
     * <pre>
     * end 条件，可选
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.GetExpr end_key = 6;</code>
     * @return The endKey.
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr getEndKey();
    /**
     * <pre>
     * end 条件，可选
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.GetExpr end_key = 6;</code>
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.GetExprOrBuilder getEndKeyOrBuilder();

    /**
     * <pre>
     * 扫描顺序
     * </pre>
     *
     * <code>optional bool reverse = 8;</code>
     * @return Whether the reverse field is set.
     */
    boolean hasReverse();
    /**
     * <pre>
     * 扫描顺序
     * </pre>
     *
     * <code>optional bool reverse = 8;</code>
     * @return The reverse.
     */
    boolean getReverse();

    /**
     * <pre>
     * 预留
     * </pre>
     *
     * <code>optional int64 flag = 9;</code>
     * @return Whether the flag field is set.
     */
    boolean hasFlag();
    /**
     * <pre>
     * 预留
     * </pre>
     *
     * <code>optional int64 flag = 9;</code>
     * @return The flag.
     */
    long getFlag();
  }
  /**
   * Protobuf type {@code Polarx.ExecPlan.KeyOnlyRangeScan}
   */
  public  static final class KeyOnlyRangeScan extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Polarx.ExecPlan.KeyOnlyRangeScan)
      KeyOnlyRangeScanOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use KeyOnlyRangeScan.newBuilder() to construct.
    private KeyOnlyRangeScan(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private KeyOnlyRangeScan() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new KeyOnlyRangeScan();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private KeyOnlyRangeScan(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) != 0)) {
                subBuilder = snapshot_.toBuilder();
              }
              snapshot_ = input.readMessage(com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(snapshot_);
                snapshot_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 26: {
              com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) != 0)) {
                subBuilder = tableInfo_.toBuilder();
              }
              tableInfo_ = input.readMessage(com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(tableInfo_);
                tableInfo_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 34: {
              com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) != 0)) {
                subBuilder = indexInfo_.toBuilder();
              }
              indexInfo_ = input.readMessage(com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(indexInfo_);
                indexInfo_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 42: {
              com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.Builder subBuilder = null;
              if (((bitField0_ & 0x00000008) != 0)) {
                subBuilder = key_.toBuilder();
              }
              key_ = input.readMessage(com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(key_);
                key_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000008;
              break;
            }
            case 50: {
              com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.Builder subBuilder = null;
              if (((bitField0_ & 0x00000010) != 0)) {
                subBuilder = endKey_.toBuilder();
              }
              endKey_ = input.readMessage(com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(endKey_);
                endKey_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000010;
              break;
            }
            case 64: {
              bitField0_ |= 0x00000020;
              reverse_ = input.readBool();
              break;
            }
            case 72: {
              bitField0_ |= 0x00000040;
              flag_ = input.readInt64();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_KeyOnlyRangeScan_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_KeyOnlyRangeScan_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.mysql.cj.x.protobuf.PolarxExecPlan.KeyOnlyRangeScan.class, com.mysql.cj.x.protobuf.PolarxExecPlan.KeyOnlyRangeScan.Builder.class);
    }

    private int bitField0_;
    public static final int SNAPSHOT_FIELD_NUMBER = 1;
    private com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction snapshot_;
    /**
     * <pre>
     * 读取快照，只有作为 top plan 时填写
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.Transaction snapshot = 1;</code>
     * @return Whether the snapshot field is set.
     */
    public boolean hasSnapshot() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * 读取快照，只有作为 top plan 时填写
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.Transaction snapshot = 1;</code>
     * @return The snapshot.
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction getSnapshot() {
      return snapshot_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.getDefaultInstance() : snapshot_;
    }
    /**
     * <pre>
     * 读取快照，只有作为 top plan 时填写
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.Transaction snapshot = 1;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.TransactionOrBuilder getSnapshotOrBuilder() {
      return snapshot_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.getDefaultInstance() : snapshot_;
    }

    public static final int TABLE_INFO_FIELD_NUMBER = 3;
    private com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo tableInfo_;
    /**
     * <pre>
     * 读取的目标 table
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.TableInfo table_info = 3;</code>
     * @return Whether the tableInfo field is set.
     */
    public boolean hasTableInfo() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * 读取的目标 table
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.TableInfo table_info = 3;</code>
     * @return The tableInfo.
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo getTableInfo() {
      return tableInfo_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.getDefaultInstance() : tableInfo_;
    }
    /**
     * <pre>
     * 读取的目标 table
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.TableInfo table_info = 3;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfoOrBuilder getTableInfoOrBuilder() {
      return tableInfo_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.getDefaultInstance() : tableInfo_;
    }

    public static final int INDEX_INFO_FIELD_NUMBER = 4;
    private com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo indexInfo_;
    /**
     * <pre>
     * 读取的目标 index
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 4;</code>
     * @return Whether the indexInfo field is set.
     */
    public boolean hasIndexInfo() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * 读取的目标 index
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 4;</code>
     * @return The indexInfo.
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo getIndexInfo() {
      return indexInfo_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.getDefaultInstance() : indexInfo_;
    }
    /**
     * <pre>
     * 读取的目标 index
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 4;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfoOrBuilder getIndexInfoOrBuilder() {
      return indexInfo_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.getDefaultInstance() : indexInfo_;
    }

    public static final int KEY_FIELD_NUMBER = 5;
    private com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr key_;
    /**
     * <code>optional .Polarx.ExecPlan.GetExpr key = 5;</code>
     * @return Whether the key field is set.
     */
    public boolean hasKey() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>optional .Polarx.ExecPlan.GetExpr key = 5;</code>
     * @return The key.
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr getKey() {
      return key_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.getDefaultInstance() : key_;
    }
    /**
     * <code>optional .Polarx.ExecPlan.GetExpr key = 5;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.GetExprOrBuilder getKeyOrBuilder() {
      return key_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.getDefaultInstance() : key_;
    }

    public static final int END_KEY_FIELD_NUMBER = 6;
    private com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr endKey_;
    /**
     * <pre>
     * end 条件，可选
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.GetExpr end_key = 6;</code>
     * @return Whether the endKey field is set.
     */
    public boolean hasEndKey() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * end 条件，可选
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.GetExpr end_key = 6;</code>
     * @return The endKey.
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr getEndKey() {
      return endKey_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.getDefaultInstance() : endKey_;
    }
    /**
     * <pre>
     * end 条件，可选
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.GetExpr end_key = 6;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.GetExprOrBuilder getEndKeyOrBuilder() {
      return endKey_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.getDefaultInstance() : endKey_;
    }

    public static final int REVERSE_FIELD_NUMBER = 8;
    private boolean reverse_;
    /**
     * <pre>
     * 扫描顺序
     * </pre>
     *
     * <code>optional bool reverse = 8;</code>
     * @return Whether the reverse field is set.
     */
    public boolean hasReverse() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * 扫描顺序
     * </pre>
     *
     * <code>optional bool reverse = 8;</code>
     * @return The reverse.
     */
    public boolean getReverse() {
      return reverse_;
    }

    public static final int FLAG_FIELD_NUMBER = 9;
    private long flag_;
    /**
     * <pre>
     * 预留
     * </pre>
     *
     * <code>optional int64 flag = 9;</code>
     * @return Whether the flag field is set.
     */
    public boolean hasFlag() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     * 预留
     * </pre>
     *
     * <code>optional int64 flag = 9;</code>
     * @return The flag.
     */
    public long getFlag() {
      return flag_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (hasTableInfo()) {
        if (!getTableInfo().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasIndexInfo()) {
        if (!getIndexInfo().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasKey()) {
        if (!getKey().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasEndKey()) {
        if (!getEndKey().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getSnapshot());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(3, getTableInfo());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(4, getIndexInfo());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(5, getKey());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeMessage(6, getEndKey());
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeBool(8, reverse_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeInt64(9, flag_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getSnapshot());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getTableInfo());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getIndexInfo());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getKey());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, getEndKey());
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(8, reverse_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(9, flag_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.KeyOnlyRangeScan)) {
        return super.equals(obj);
      }
      com.mysql.cj.x.protobuf.PolarxExecPlan.KeyOnlyRangeScan other = (com.mysql.cj.x.protobuf.PolarxExecPlan.KeyOnlyRangeScan) obj;

      if (hasSnapshot() != other.hasSnapshot()) return false;
      if (hasSnapshot()) {
        if (!getSnapshot()
            .equals(other.getSnapshot())) return false;
      }
      if (hasTableInfo() != other.hasTableInfo()) return false;
      if (hasTableInfo()) {
        if (!getTableInfo()
            .equals(other.getTableInfo())) return false;
      }
      if (hasIndexInfo() != other.hasIndexInfo()) return false;
      if (hasIndexInfo()) {
        if (!getIndexInfo()
            .equals(other.getIndexInfo())) return false;
      }
      if (hasKey() != other.hasKey()) return false;
      if (hasKey()) {
        if (!getKey()
            .equals(other.getKey())) return false;
      }
      if (hasEndKey() != other.hasEndKey()) return false;
      if (hasEndKey()) {
        if (!getEndKey()
            .equals(other.getEndKey())) return false;
      }
      if (hasReverse() != other.hasReverse()) return false;
      if (hasReverse()) {
        if (getReverse()
            != other.getReverse()) return false;
      }
      if (hasFlag() != other.hasFlag()) return false;
      if (hasFlag()) {
        if (getFlag()
            != other.getFlag()) return false;
      }
        return unknownFields.equals(other.unknownFields);
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasSnapshot()) {
        hash = (37 * hash) + SNAPSHOT_FIELD_NUMBER;
        hash = (53 * hash) + getSnapshot().hashCode();
      }
      if (hasTableInfo()) {
        hash = (37 * hash) + TABLE_INFO_FIELD_NUMBER;
        hash = (53 * hash) + getTableInfo().hashCode();
      }
      if (hasIndexInfo()) {
        hash = (37 * hash) + INDEX_INFO_FIELD_NUMBER;
        hash = (53 * hash) + getIndexInfo().hashCode();
      }
      if (hasKey()) {
        hash = (37 * hash) + KEY_FIELD_NUMBER;
        hash = (53 * hash) + getKey().hashCode();
      }
      if (hasEndKey()) {
        hash = (37 * hash) + END_KEY_FIELD_NUMBER;
        hash = (53 * hash) + getEndKey().hashCode();
      }
      if (hasReverse()) {
        hash = (37 * hash) + REVERSE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getReverse());
      }
      if (hasFlag()) {
        hash = (37 * hash) + FLAG_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getFlag());
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.KeyOnlyRangeScan parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.KeyOnlyRangeScan parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.KeyOnlyRangeScan parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.KeyOnlyRangeScan parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.KeyOnlyRangeScan parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.KeyOnlyRangeScan parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.KeyOnlyRangeScan parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.KeyOnlyRangeScan parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.KeyOnlyRangeScan parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.KeyOnlyRangeScan parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.KeyOnlyRangeScan parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.KeyOnlyRangeScan parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.mysql.cj.x.protobuf.PolarxExecPlan.KeyOnlyRangeScan prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Polarx.ExecPlan.KeyOnlyRangeScan}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Polarx.ExecPlan.KeyOnlyRangeScan)
        com.mysql.cj.x.protobuf.PolarxExecPlan.KeyOnlyRangeScanOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_KeyOnlyRangeScan_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_KeyOnlyRangeScan_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.mysql.cj.x.protobuf.PolarxExecPlan.KeyOnlyRangeScan.class, com.mysql.cj.x.protobuf.PolarxExecPlan.KeyOnlyRangeScan.Builder.class);
      }

      // Construct using com.mysql.cj.x.protobuf.PolarxExecPlan.KeyOnlyRangeScan.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getSnapshotFieldBuilder();
          getTableInfoFieldBuilder();
          getIndexInfoFieldBuilder();
          getKeyFieldBuilder();
          getEndKeyFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (snapshotBuilder_ == null) {
          snapshot_ = null;
        } else {
          snapshotBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (tableInfoBuilder_ == null) {
          tableInfo_ = null;
        } else {
          tableInfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        if (indexInfoBuilder_ == null) {
          indexInfo_ = null;
        } else {
          indexInfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        if (keyBuilder_ == null) {
          key_ = null;
        } else {
          keyBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        if (endKeyBuilder_ == null) {
          endKey_ = null;
        } else {
          endKeyBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        reverse_ = false;
        bitField0_ = (bitField0_ & ~0x00000020);
        flag_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000040);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_KeyOnlyRangeScan_descriptor;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.KeyOnlyRangeScan getDefaultInstanceForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.KeyOnlyRangeScan.getDefaultInstance();
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.KeyOnlyRangeScan build() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.KeyOnlyRangeScan result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.KeyOnlyRangeScan buildPartial() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.KeyOnlyRangeScan result = new com.mysql.cj.x.protobuf.PolarxExecPlan.KeyOnlyRangeScan(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          if (snapshotBuilder_ == null) {
            result.snapshot_ = snapshot_;
          } else {
            result.snapshot_ = snapshotBuilder_.build();
          }
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          if (tableInfoBuilder_ == null) {
            result.tableInfo_ = tableInfo_;
          } else {
            result.tableInfo_ = tableInfoBuilder_.build();
          }
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          if (indexInfoBuilder_ == null) {
            result.indexInfo_ = indexInfo_;
          } else {
            result.indexInfo_ = indexInfoBuilder_.build();
          }
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          if (keyBuilder_ == null) {
            result.key_ = key_;
          } else {
            result.key_ = keyBuilder_.build();
          }
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          if (endKeyBuilder_ == null) {
            result.endKey_ = endKey_;
          } else {
            result.endKey_ = endKeyBuilder_.build();
          }
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.reverse_ = reverse_;
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.flag_ = flag_;
          to_bitField0_ |= 0x00000040;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.KeyOnlyRangeScan) {
          return mergeFrom((com.mysql.cj.x.protobuf.PolarxExecPlan.KeyOnlyRangeScan)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.mysql.cj.x.protobuf.PolarxExecPlan.KeyOnlyRangeScan other) {
        if (other == com.mysql.cj.x.protobuf.PolarxExecPlan.KeyOnlyRangeScan.getDefaultInstance()) return this;
        if (other.hasSnapshot()) {
          mergeSnapshot(other.getSnapshot());
        }
        if (other.hasTableInfo()) {
          mergeTableInfo(other.getTableInfo());
        }
        if (other.hasIndexInfo()) {
          mergeIndexInfo(other.getIndexInfo());
        }
        if (other.hasKey()) {
          mergeKey(other.getKey());
        }
        if (other.hasEndKey()) {
          mergeEndKey(other.getEndKey());
        }
        if (other.hasReverse()) {
          setReverse(other.getReverse());
        }
        if (other.hasFlag()) {
          setFlag(other.getFlag());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (hasTableInfo()) {
          if (!getTableInfo().isInitialized()) {
            return false;
          }
        }
        if (hasIndexInfo()) {
          if (!getIndexInfo().isInitialized()) {
            return false;
          }
        }
        if (hasKey()) {
          if (!getKey().isInitialized()) {
            return false;
          }
        }
        if (hasEndKey()) {
            return getEndKey().isInitialized();
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.mysql.cj.x.protobuf.PolarxExecPlan.KeyOnlyRangeScan parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.mysql.cj.x.protobuf.PolarxExecPlan.KeyOnlyRangeScan) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction snapshot_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction, com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.TransactionOrBuilder> snapshotBuilder_;
      /**
       * <pre>
       * 读取快照，只有作为 top plan 时填写
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.Transaction snapshot = 1;</code>
       * @return Whether the snapshot field is set.
       */
      public boolean hasSnapshot() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * 读取快照，只有作为 top plan 时填写
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.Transaction snapshot = 1;</code>
       * @return The snapshot.
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction getSnapshot() {
        if (snapshotBuilder_ == null) {
          return snapshot_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.getDefaultInstance() : snapshot_;
        } else {
          return snapshotBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * 读取快照，只有作为 top plan 时填写
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.Transaction snapshot = 1;</code>
       */
      public Builder setSnapshot(com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction value) {
        if (snapshotBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          snapshot_ = value;
          onChanged();
        } else {
          snapshotBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * 读取快照，只有作为 top plan 时填写
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.Transaction snapshot = 1;</code>
       */
      public Builder setSnapshot(
          com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.Builder builderForValue) {
        if (snapshotBuilder_ == null) {
          snapshot_ = builderForValue.build();
          onChanged();
        } else {
          snapshotBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * 读取快照，只有作为 top plan 时填写
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.Transaction snapshot = 1;</code>
       */
      public Builder mergeSnapshot(com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction value) {
        if (snapshotBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
              snapshot_ != null &&
              snapshot_ != com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.getDefaultInstance()) {
            snapshot_ =
              com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.newBuilder(snapshot_).mergeFrom(value).buildPartial();
          } else {
            snapshot_ = value;
          }
          onChanged();
        } else {
          snapshotBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * 读取快照，只有作为 top plan 时填写
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.Transaction snapshot = 1;</code>
       */
      public Builder clearSnapshot() {
        if (snapshotBuilder_ == null) {
          snapshot_ = null;
          onChanged();
        } else {
          snapshotBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <pre>
       * 读取快照，只有作为 top plan 时填写
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.Transaction snapshot = 1;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.Builder getSnapshotBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getSnapshotFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * 读取快照，只有作为 top plan 时填写
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.Transaction snapshot = 1;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.TransactionOrBuilder getSnapshotOrBuilder() {
        if (snapshotBuilder_ != null) {
          return snapshotBuilder_.getMessageOrBuilder();
        } else {
          return snapshot_ == null ?
              com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.getDefaultInstance() : snapshot_;
        }
      }
      /**
       * <pre>
       * 读取快照，只有作为 top plan 时填写
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.Transaction snapshot = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction, com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.TransactionOrBuilder> 
          getSnapshotFieldBuilder() {
        if (snapshotBuilder_ == null) {
          snapshotBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction, com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.TransactionOrBuilder>(
                  getSnapshot(),
                  getParentForChildren(),
                  isClean());
          snapshot_ = null;
        }
        return snapshotBuilder_;
      }

      private com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo tableInfo_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo, com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfoOrBuilder> tableInfoBuilder_;
      /**
       * <pre>
       * 读取的目标 table
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.TableInfo table_info = 3;</code>
       * @return Whether the tableInfo field is set.
       */
      public boolean hasTableInfo() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * 读取的目标 table
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.TableInfo table_info = 3;</code>
       * @return The tableInfo.
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo getTableInfo() {
        if (tableInfoBuilder_ == null) {
          return tableInfo_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.getDefaultInstance() : tableInfo_;
        } else {
          return tableInfoBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * 读取的目标 table
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.TableInfo table_info = 3;</code>
       */
      public Builder setTableInfo(com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo value) {
        if (tableInfoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          tableInfo_ = value;
          onChanged();
        } else {
          tableInfoBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * 读取的目标 table
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.TableInfo table_info = 3;</code>
       */
      public Builder setTableInfo(
          com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.Builder builderForValue) {
        if (tableInfoBuilder_ == null) {
          tableInfo_ = builderForValue.build();
          onChanged();
        } else {
          tableInfoBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * 读取的目标 table
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.TableInfo table_info = 3;</code>
       */
      public Builder mergeTableInfo(com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo value) {
        if (tableInfoBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
              tableInfo_ != null &&
              tableInfo_ != com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.getDefaultInstance()) {
            tableInfo_ =
              com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.newBuilder(tableInfo_).mergeFrom(value).buildPartial();
          } else {
            tableInfo_ = value;
          }
          onChanged();
        } else {
          tableInfoBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * 读取的目标 table
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.TableInfo table_info = 3;</code>
       */
      public Builder clearTableInfo() {
        if (tableInfoBuilder_ == null) {
          tableInfo_ = null;
          onChanged();
        } else {
          tableInfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      /**
       * <pre>
       * 读取的目标 table
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.TableInfo table_info = 3;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.Builder getTableInfoBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getTableInfoFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * 读取的目标 table
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.TableInfo table_info = 3;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfoOrBuilder getTableInfoOrBuilder() {
        if (tableInfoBuilder_ != null) {
          return tableInfoBuilder_.getMessageOrBuilder();
        } else {
          return tableInfo_ == null ?
              com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.getDefaultInstance() : tableInfo_;
        }
      }
      /**
       * <pre>
       * 读取的目标 table
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.TableInfo table_info = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo, com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfoOrBuilder> 
          getTableInfoFieldBuilder() {
        if (tableInfoBuilder_ == null) {
          tableInfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo, com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfoOrBuilder>(
                  getTableInfo(),
                  getParentForChildren(),
                  isClean());
          tableInfo_ = null;
        }
        return tableInfoBuilder_;
      }

      private com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo indexInfo_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo, com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfoOrBuilder> indexInfoBuilder_;
      /**
       * <pre>
       * 读取的目标 index
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 4;</code>
       * @return Whether the indexInfo field is set.
       */
      public boolean hasIndexInfo() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * 读取的目标 index
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 4;</code>
       * @return The indexInfo.
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo getIndexInfo() {
        if (indexInfoBuilder_ == null) {
          return indexInfo_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.getDefaultInstance() : indexInfo_;
        } else {
          return indexInfoBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * 读取的目标 index
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 4;</code>
       */
      public Builder setIndexInfo(com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo value) {
        if (indexInfoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          indexInfo_ = value;
          onChanged();
        } else {
          indexInfoBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <pre>
       * 读取的目标 index
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 4;</code>
       */
      public Builder setIndexInfo(
          com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.Builder builderForValue) {
        if (indexInfoBuilder_ == null) {
          indexInfo_ = builderForValue.build();
          onChanged();
        } else {
          indexInfoBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <pre>
       * 读取的目标 index
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 4;</code>
       */
      public Builder mergeIndexInfo(com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo value) {
        if (indexInfoBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
              indexInfo_ != null &&
              indexInfo_ != com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.getDefaultInstance()) {
            indexInfo_ =
              com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.newBuilder(indexInfo_).mergeFrom(value).buildPartial();
          } else {
            indexInfo_ = value;
          }
          onChanged();
        } else {
          indexInfoBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <pre>
       * 读取的目标 index
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 4;</code>
       */
      public Builder clearIndexInfo() {
        if (indexInfoBuilder_ == null) {
          indexInfo_ = null;
          onChanged();
        } else {
          indexInfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      /**
       * <pre>
       * 读取的目标 index
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 4;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.Builder getIndexInfoBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getIndexInfoFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * 读取的目标 index
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 4;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfoOrBuilder getIndexInfoOrBuilder() {
        if (indexInfoBuilder_ != null) {
          return indexInfoBuilder_.getMessageOrBuilder();
        } else {
          return indexInfo_ == null ?
              com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.getDefaultInstance() : indexInfo_;
        }
      }
      /**
       * <pre>
       * 读取的目标 index
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo, com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfoOrBuilder> 
          getIndexInfoFieldBuilder() {
        if (indexInfoBuilder_ == null) {
          indexInfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo, com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfoOrBuilder>(
                  getIndexInfo(),
                  getParentForChildren(),
                  isClean());
          indexInfo_ = null;
        }
        return indexInfoBuilder_;
      }

      private com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr key_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr, com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.GetExprOrBuilder> keyBuilder_;
      /**
       * <code>optional .Polarx.ExecPlan.GetExpr key = 5;</code>
       * @return Whether the key field is set.
       */
      public boolean hasKey() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>optional .Polarx.ExecPlan.GetExpr key = 5;</code>
       * @return The key.
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr getKey() {
        if (keyBuilder_ == null) {
          return key_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.getDefaultInstance() : key_;
        } else {
          return keyBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .Polarx.ExecPlan.GetExpr key = 5;</code>
       */
      public Builder setKey(com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr value) {
        if (keyBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          key_ = value;
          onChanged();
        } else {
          keyBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.GetExpr key = 5;</code>
       */
      public Builder setKey(
          com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.Builder builderForValue) {
        if (keyBuilder_ == null) {
          key_ = builderForValue.build();
          onChanged();
        } else {
          keyBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.GetExpr key = 5;</code>
       */
      public Builder mergeKey(com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr value) {
        if (keyBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0) &&
              key_ != null &&
              key_ != com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.getDefaultInstance()) {
            key_ =
              com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.newBuilder(key_).mergeFrom(value).buildPartial();
          } else {
            key_ = value;
          }
          onChanged();
        } else {
          keyBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.GetExpr key = 5;</code>
       */
      public Builder clearKey() {
        if (keyBuilder_ == null) {
          key_ = null;
          onChanged();
        } else {
          keyBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.GetExpr key = 5;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.Builder getKeyBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getKeyFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .Polarx.ExecPlan.GetExpr key = 5;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.GetExprOrBuilder getKeyOrBuilder() {
        if (keyBuilder_ != null) {
          return keyBuilder_.getMessageOrBuilder();
        } else {
          return key_ == null ?
              com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.getDefaultInstance() : key_;
        }
      }
      /**
       * <code>optional .Polarx.ExecPlan.GetExpr key = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr, com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.GetExprOrBuilder> 
          getKeyFieldBuilder() {
        if (keyBuilder_ == null) {
          keyBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr, com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.GetExprOrBuilder>(
                  getKey(),
                  getParentForChildren(),
                  isClean());
          key_ = null;
        }
        return keyBuilder_;
      }

      private com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr endKey_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr, com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.GetExprOrBuilder> endKeyBuilder_;
      /**
       * <pre>
       * end 条件，可选
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.GetExpr end_key = 6;</code>
       * @return Whether the endKey field is set.
       */
      public boolean hasEndKey() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * end 条件，可选
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.GetExpr end_key = 6;</code>
       * @return The endKey.
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr getEndKey() {
        if (endKeyBuilder_ == null) {
          return endKey_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.getDefaultInstance() : endKey_;
        } else {
          return endKeyBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * end 条件，可选
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.GetExpr end_key = 6;</code>
       */
      public Builder setEndKey(com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr value) {
        if (endKeyBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          endKey_ = value;
          onChanged();
        } else {
          endKeyBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <pre>
       * end 条件，可选
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.GetExpr end_key = 6;</code>
       */
      public Builder setEndKey(
          com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.Builder builderForValue) {
        if (endKeyBuilder_ == null) {
          endKey_ = builderForValue.build();
          onChanged();
        } else {
          endKeyBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <pre>
       * end 条件，可选
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.GetExpr end_key = 6;</code>
       */
      public Builder mergeEndKey(com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr value) {
        if (endKeyBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
              endKey_ != null &&
              endKey_ != com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.getDefaultInstance()) {
            endKey_ =
              com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.newBuilder(endKey_).mergeFrom(value).buildPartial();
          } else {
            endKey_ = value;
          }
          onChanged();
        } else {
          endKeyBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <pre>
       * end 条件，可选
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.GetExpr end_key = 6;</code>
       */
      public Builder clearEndKey() {
        if (endKeyBuilder_ == null) {
          endKey_ = null;
          onChanged();
        } else {
          endKeyBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }
      /**
       * <pre>
       * end 条件，可选
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.GetExpr end_key = 6;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.Builder getEndKeyBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getEndKeyFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * end 条件，可选
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.GetExpr end_key = 6;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.GetExprOrBuilder getEndKeyOrBuilder() {
        if (endKeyBuilder_ != null) {
          return endKeyBuilder_.getMessageOrBuilder();
        } else {
          return endKey_ == null ?
              com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.getDefaultInstance() : endKey_;
        }
      }
      /**
       * <pre>
       * end 条件，可选
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.GetExpr end_key = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr, com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.GetExprOrBuilder> 
          getEndKeyFieldBuilder() {
        if (endKeyBuilder_ == null) {
          endKeyBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr, com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.GetExprOrBuilder>(
                  getEndKey(),
                  getParentForChildren(),
                  isClean());
          endKey_ = null;
        }
        return endKeyBuilder_;
      }

      private boolean reverse_ ;
      /**
       * <pre>
       * 扫描顺序
       * </pre>
       *
       * <code>optional bool reverse = 8;</code>
       * @return Whether the reverse field is set.
       */
      public boolean hasReverse() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * 扫描顺序
       * </pre>
       *
       * <code>optional bool reverse = 8;</code>
       * @return The reverse.
       */
      public boolean getReverse() {
        return reverse_;
      }
      /**
       * <pre>
       * 扫描顺序
       * </pre>
       *
       * <code>optional bool reverse = 8;</code>
       * @param value The reverse to set.
       * @return This builder for chaining.
       */
      public Builder setReverse(boolean value) {
        bitField0_ |= 0x00000020;
        reverse_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 扫描顺序
       * </pre>
       *
       * <code>optional bool reverse = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearReverse() {
        bitField0_ = (bitField0_ & ~0x00000020);
        reverse_ = false;
        onChanged();
        return this;
      }

      private long flag_ ;
      /**
       * <pre>
       * 预留
       * </pre>
       *
       * <code>optional int64 flag = 9;</code>
       * @return Whether the flag field is set.
       */
      public boolean hasFlag() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * 预留
       * </pre>
       *
       * <code>optional int64 flag = 9;</code>
       * @return The flag.
       */
      public long getFlag() {
        return flag_;
      }
      /**
       * <pre>
       * 预留
       * </pre>
       *
       * <code>optional int64 flag = 9;</code>
       * @param value The flag to set.
       * @return This builder for chaining.
       */
      public Builder setFlag(long value) {
        bitField0_ |= 0x00000040;
        flag_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 预留
       * </pre>
       *
       * <code>optional int64 flag = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearFlag() {
        bitField0_ = (bitField0_ & ~0x00000040);
        flag_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Polarx.ExecPlan.KeyOnlyRangeScan)
    }

    // @@protoc_insertion_point(class_scope:Polarx.ExecPlan.KeyOnlyRangeScan)
    private static final com.mysql.cj.x.protobuf.PolarxExecPlan.KeyOnlyRangeScan DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.mysql.cj.x.protobuf.PolarxExecPlan.KeyOnlyRangeScan();
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.KeyOnlyRangeScan getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<KeyOnlyRangeScan>
        PARSER = new com.google.protobuf.AbstractParser<KeyOnlyRangeScan>() {
      @java.lang.Override
      public KeyOnlyRangeScan parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new KeyOnlyRangeScan(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<KeyOnlyRangeScan> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<KeyOnlyRangeScan> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.mysql.cj.x.protobuf.PolarxExecPlan.KeyOnlyRangeScan getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RangeScanOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Polarx.ExecPlan.RangeScan)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * 读取快照，只有作为 top plan 时填写
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.Transaction snapshot = 1;</code>
     * @return Whether the snapshot field is set.
     */
    boolean hasSnapshot();
    /**
     * <pre>
     * 读取快照，只有作为 top plan 时填写
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.Transaction snapshot = 1;</code>
     * @return The snapshot.
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction getSnapshot();
    /**
     * <pre>
     * 读取快照，只有作为 top plan 时填写
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.Transaction snapshot = 1;</code>
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.TransactionOrBuilder getSnapshotOrBuilder();

    /**
     * <pre>
     * 读取的目标 table
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.TableInfo table_info = 3;</code>
     * @return Whether the tableInfo field is set.
     */
    boolean hasTableInfo();
    /**
     * <pre>
     * 读取的目标 table
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.TableInfo table_info = 3;</code>
     * @return The tableInfo.
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo getTableInfo();
    /**
     * <pre>
     * 读取的目标 table
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.TableInfo table_info = 3;</code>
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfoOrBuilder getTableInfoOrBuilder();

    /**
     * <pre>
     * 读取的目标 index
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 4;</code>
     * @return Whether the indexInfo field is set.
     */
    boolean hasIndexInfo();
    /**
     * <pre>
     * 读取的目标 index
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 4;</code>
     * @return The indexInfo.
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo getIndexInfo();
    /**
     * <pre>
     * 读取的目标 index
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 4;</code>
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfoOrBuilder getIndexInfoOrBuilder();

    /**
     * <code>optional .Polarx.ExecPlan.GetExpr key = 5;</code>
     * @return Whether the key field is set.
     */
    boolean hasKey();
    /**
     * <code>optional .Polarx.ExecPlan.GetExpr key = 5;</code>
     * @return The key.
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr getKey();
    /**
     * <code>optional .Polarx.ExecPlan.GetExpr key = 5;</code>
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.GetExprOrBuilder getKeyOrBuilder();

    /**
     * <pre>
     * end 条件，可选
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.GetExpr end_key = 6;</code>
     * @return Whether the endKey field is set.
     */
    boolean hasEndKey();
    /**
     * <pre>
     * end 条件，可选
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.GetExpr end_key = 6;</code>
     * @return The endKey.
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr getEndKey();
    /**
     * <pre>
     * end 条件，可选
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.GetExpr end_key = 6;</code>
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.GetExprOrBuilder getEndKeyOrBuilder();

    /**
     * <pre>
     * 扫描顺序
     * </pre>
     *
     * <code>optional bool reverse = 8;</code>
     * @return Whether the reverse field is set.
     */
    boolean hasReverse();
    /**
     * <pre>
     * 扫描顺序
     * </pre>
     *
     * <code>optional bool reverse = 8;</code>
     * @return The reverse.
     */
    boolean getReverse();

    /**
     * <pre>
     * 预留
     * </pre>
     *
     * <code>optional int64 flag = 9;</code>
     * @return Whether the flag field is set.
     */
    boolean hasFlag();
    /**
     * <pre>
     * 预留
     * </pre>
     *
     * <code>optional int64 flag = 9;</code>
     * @return The flag.
     */
    long getFlag();
  }
  /**
   * Protobuf type {@code Polarx.ExecPlan.RangeScan}
   */
  public  static final class RangeScan extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Polarx.ExecPlan.RangeScan)
      RangeScanOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use RangeScan.newBuilder() to construct.
    private RangeScan(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private RangeScan() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new RangeScan();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private RangeScan(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) != 0)) {
                subBuilder = snapshot_.toBuilder();
              }
              snapshot_ = input.readMessage(com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(snapshot_);
                snapshot_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 26: {
              com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) != 0)) {
                subBuilder = tableInfo_.toBuilder();
              }
              tableInfo_ = input.readMessage(com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(tableInfo_);
                tableInfo_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 34: {
              com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) != 0)) {
                subBuilder = indexInfo_.toBuilder();
              }
              indexInfo_ = input.readMessage(com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(indexInfo_);
                indexInfo_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 42: {
              com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.Builder subBuilder = null;
              if (((bitField0_ & 0x00000008) != 0)) {
                subBuilder = key_.toBuilder();
              }
              key_ = input.readMessage(com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(key_);
                key_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000008;
              break;
            }
            case 50: {
              com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.Builder subBuilder = null;
              if (((bitField0_ & 0x00000010) != 0)) {
                subBuilder = endKey_.toBuilder();
              }
              endKey_ = input.readMessage(com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(endKey_);
                endKey_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000010;
              break;
            }
            case 64: {
              bitField0_ |= 0x00000020;
              reverse_ = input.readBool();
              break;
            }
            case 72: {
              bitField0_ |= 0x00000040;
              flag_ = input.readInt64();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_RangeScan_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_RangeScan_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan.class, com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan.Builder.class);
    }

    private int bitField0_;
    public static final int SNAPSHOT_FIELD_NUMBER = 1;
    private com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction snapshot_;
    /**
     * <pre>
     * 读取快照，只有作为 top plan 时填写
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.Transaction snapshot = 1;</code>
     * @return Whether the snapshot field is set.
     */
    public boolean hasSnapshot() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * 读取快照，只有作为 top plan 时填写
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.Transaction snapshot = 1;</code>
     * @return The snapshot.
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction getSnapshot() {
      return snapshot_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.getDefaultInstance() : snapshot_;
    }
    /**
     * <pre>
     * 读取快照，只有作为 top plan 时填写
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.Transaction snapshot = 1;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.TransactionOrBuilder getSnapshotOrBuilder() {
      return snapshot_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.getDefaultInstance() : snapshot_;
    }

    public static final int TABLE_INFO_FIELD_NUMBER = 3;
    private com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo tableInfo_;
    /**
     * <pre>
     * 读取的目标 table
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.TableInfo table_info = 3;</code>
     * @return Whether the tableInfo field is set.
     */
    public boolean hasTableInfo() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * 读取的目标 table
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.TableInfo table_info = 3;</code>
     * @return The tableInfo.
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo getTableInfo() {
      return tableInfo_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.getDefaultInstance() : tableInfo_;
    }
    /**
     * <pre>
     * 读取的目标 table
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.TableInfo table_info = 3;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfoOrBuilder getTableInfoOrBuilder() {
      return tableInfo_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.getDefaultInstance() : tableInfo_;
    }

    public static final int INDEX_INFO_FIELD_NUMBER = 4;
    private com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo indexInfo_;
    /**
     * <pre>
     * 读取的目标 index
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 4;</code>
     * @return Whether the indexInfo field is set.
     */
    public boolean hasIndexInfo() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * 读取的目标 index
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 4;</code>
     * @return The indexInfo.
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo getIndexInfo() {
      return indexInfo_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.getDefaultInstance() : indexInfo_;
    }
    /**
     * <pre>
     * 读取的目标 index
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 4;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfoOrBuilder getIndexInfoOrBuilder() {
      return indexInfo_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.getDefaultInstance() : indexInfo_;
    }

    public static final int KEY_FIELD_NUMBER = 5;
    private com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr key_;
    /**
     * <code>optional .Polarx.ExecPlan.GetExpr key = 5;</code>
     * @return Whether the key field is set.
     */
    public boolean hasKey() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>optional .Polarx.ExecPlan.GetExpr key = 5;</code>
     * @return The key.
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr getKey() {
      return key_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.getDefaultInstance() : key_;
    }
    /**
     * <code>optional .Polarx.ExecPlan.GetExpr key = 5;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.GetExprOrBuilder getKeyOrBuilder() {
      return key_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.getDefaultInstance() : key_;
    }

    public static final int END_KEY_FIELD_NUMBER = 6;
    private com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr endKey_;
    /**
     * <pre>
     * end 条件，可选
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.GetExpr end_key = 6;</code>
     * @return Whether the endKey field is set.
     */
    public boolean hasEndKey() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * end 条件，可选
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.GetExpr end_key = 6;</code>
     * @return The endKey.
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr getEndKey() {
      return endKey_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.getDefaultInstance() : endKey_;
    }
    /**
     * <pre>
     * end 条件，可选
     * </pre>
     *
     * <code>optional .Polarx.ExecPlan.GetExpr end_key = 6;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.GetExprOrBuilder getEndKeyOrBuilder() {
      return endKey_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.getDefaultInstance() : endKey_;
    }

    public static final int REVERSE_FIELD_NUMBER = 8;
    private boolean reverse_;
    /**
     * <pre>
     * 扫描顺序
     * </pre>
     *
     * <code>optional bool reverse = 8;</code>
     * @return Whether the reverse field is set.
     */
    public boolean hasReverse() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * 扫描顺序
     * </pre>
     *
     * <code>optional bool reverse = 8;</code>
     * @return The reverse.
     */
    public boolean getReverse() {
      return reverse_;
    }

    public static final int FLAG_FIELD_NUMBER = 9;
    private long flag_;
    /**
     * <pre>
     * 预留
     * </pre>
     *
     * <code>optional int64 flag = 9;</code>
     * @return Whether the flag field is set.
     */
    public boolean hasFlag() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     * 预留
     * </pre>
     *
     * <code>optional int64 flag = 9;</code>
     * @return The flag.
     */
    public long getFlag() {
      return flag_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (hasTableInfo()) {
        if (!getTableInfo().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasIndexInfo()) {
        if (!getIndexInfo().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasKey()) {
        if (!getKey().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasEndKey()) {
        if (!getEndKey().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getSnapshot());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(3, getTableInfo());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(4, getIndexInfo());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(5, getKey());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeMessage(6, getEndKey());
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeBool(8, reverse_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeInt64(9, flag_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getSnapshot());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getTableInfo());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getIndexInfo());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getKey());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, getEndKey());
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(8, reverse_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(9, flag_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan)) {
        return super.equals(obj);
      }
      com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan other = (com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan) obj;

      if (hasSnapshot() != other.hasSnapshot()) return false;
      if (hasSnapshot()) {
        if (!getSnapshot()
            .equals(other.getSnapshot())) return false;
      }
      if (hasTableInfo() != other.hasTableInfo()) return false;
      if (hasTableInfo()) {
        if (!getTableInfo()
            .equals(other.getTableInfo())) return false;
      }
      if (hasIndexInfo() != other.hasIndexInfo()) return false;
      if (hasIndexInfo()) {
        if (!getIndexInfo()
            .equals(other.getIndexInfo())) return false;
      }
      if (hasKey() != other.hasKey()) return false;
      if (hasKey()) {
        if (!getKey()
            .equals(other.getKey())) return false;
      }
      if (hasEndKey() != other.hasEndKey()) return false;
      if (hasEndKey()) {
        if (!getEndKey()
            .equals(other.getEndKey())) return false;
      }
      if (hasReverse() != other.hasReverse()) return false;
      if (hasReverse()) {
        if (getReverse()
            != other.getReverse()) return false;
      }
      if (hasFlag() != other.hasFlag()) return false;
      if (hasFlag()) {
        if (getFlag()
            != other.getFlag()) return false;
      }
        return unknownFields.equals(other.unknownFields);
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasSnapshot()) {
        hash = (37 * hash) + SNAPSHOT_FIELD_NUMBER;
        hash = (53 * hash) + getSnapshot().hashCode();
      }
      if (hasTableInfo()) {
        hash = (37 * hash) + TABLE_INFO_FIELD_NUMBER;
        hash = (53 * hash) + getTableInfo().hashCode();
      }
      if (hasIndexInfo()) {
        hash = (37 * hash) + INDEX_INFO_FIELD_NUMBER;
        hash = (53 * hash) + getIndexInfo().hashCode();
      }
      if (hasKey()) {
        hash = (37 * hash) + KEY_FIELD_NUMBER;
        hash = (53 * hash) + getKey().hashCode();
      }
      if (hasEndKey()) {
        hash = (37 * hash) + END_KEY_FIELD_NUMBER;
        hash = (53 * hash) + getEndKey().hashCode();
      }
      if (hasReverse()) {
        hash = (37 * hash) + REVERSE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getReverse());
      }
      if (hasFlag()) {
        hash = (37 * hash) + FLAG_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getFlag());
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Polarx.ExecPlan.RangeScan}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Polarx.ExecPlan.RangeScan)
        com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScanOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_RangeScan_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_RangeScan_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan.class, com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan.Builder.class);
      }

      // Construct using com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getSnapshotFieldBuilder();
          getTableInfoFieldBuilder();
          getIndexInfoFieldBuilder();
          getKeyFieldBuilder();
          getEndKeyFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (snapshotBuilder_ == null) {
          snapshot_ = null;
        } else {
          snapshotBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (tableInfoBuilder_ == null) {
          tableInfo_ = null;
        } else {
          tableInfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        if (indexInfoBuilder_ == null) {
          indexInfo_ = null;
        } else {
          indexInfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        if (keyBuilder_ == null) {
          key_ = null;
        } else {
          keyBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        if (endKeyBuilder_ == null) {
          endKey_ = null;
        } else {
          endKeyBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        reverse_ = false;
        bitField0_ = (bitField0_ & ~0x00000020);
        flag_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000040);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_RangeScan_descriptor;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan getDefaultInstanceForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan.getDefaultInstance();
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan build() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan buildPartial() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan result = new com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          if (snapshotBuilder_ == null) {
            result.snapshot_ = snapshot_;
          } else {
            result.snapshot_ = snapshotBuilder_.build();
          }
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          if (tableInfoBuilder_ == null) {
            result.tableInfo_ = tableInfo_;
          } else {
            result.tableInfo_ = tableInfoBuilder_.build();
          }
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          if (indexInfoBuilder_ == null) {
            result.indexInfo_ = indexInfo_;
          } else {
            result.indexInfo_ = indexInfoBuilder_.build();
          }
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          if (keyBuilder_ == null) {
            result.key_ = key_;
          } else {
            result.key_ = keyBuilder_.build();
          }
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          if (endKeyBuilder_ == null) {
            result.endKey_ = endKey_;
          } else {
            result.endKey_ = endKeyBuilder_.build();
          }
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.reverse_ = reverse_;
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.flag_ = flag_;
          to_bitField0_ |= 0x00000040;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan) {
          return mergeFrom((com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan other) {
        if (other == com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan.getDefaultInstance()) return this;
        if (other.hasSnapshot()) {
          mergeSnapshot(other.getSnapshot());
        }
        if (other.hasTableInfo()) {
          mergeTableInfo(other.getTableInfo());
        }
        if (other.hasIndexInfo()) {
          mergeIndexInfo(other.getIndexInfo());
        }
        if (other.hasKey()) {
          mergeKey(other.getKey());
        }
        if (other.hasEndKey()) {
          mergeEndKey(other.getEndKey());
        }
        if (other.hasReverse()) {
          setReverse(other.getReverse());
        }
        if (other.hasFlag()) {
          setFlag(other.getFlag());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (hasTableInfo()) {
          if (!getTableInfo().isInitialized()) {
            return false;
          }
        }
        if (hasIndexInfo()) {
          if (!getIndexInfo().isInitialized()) {
            return false;
          }
        }
        if (hasKey()) {
          if (!getKey().isInitialized()) {
            return false;
          }
        }
        if (hasEndKey()) {
            return getEndKey().isInitialized();
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction snapshot_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction, com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.TransactionOrBuilder> snapshotBuilder_;
      /**
       * <pre>
       * 读取快照，只有作为 top plan 时填写
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.Transaction snapshot = 1;</code>
       * @return Whether the snapshot field is set.
       */
      public boolean hasSnapshot() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * 读取快照，只有作为 top plan 时填写
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.Transaction snapshot = 1;</code>
       * @return The snapshot.
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction getSnapshot() {
        if (snapshotBuilder_ == null) {
          return snapshot_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.getDefaultInstance() : snapshot_;
        } else {
          return snapshotBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * 读取快照，只有作为 top plan 时填写
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.Transaction snapshot = 1;</code>
       */
      public Builder setSnapshot(com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction value) {
        if (snapshotBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          snapshot_ = value;
          onChanged();
        } else {
          snapshotBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * 读取快照，只有作为 top plan 时填写
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.Transaction snapshot = 1;</code>
       */
      public Builder setSnapshot(
          com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.Builder builderForValue) {
        if (snapshotBuilder_ == null) {
          snapshot_ = builderForValue.build();
          onChanged();
        } else {
          snapshotBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * 读取快照，只有作为 top plan 时填写
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.Transaction snapshot = 1;</code>
       */
      public Builder mergeSnapshot(com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction value) {
        if (snapshotBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
              snapshot_ != null &&
              snapshot_ != com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.getDefaultInstance()) {
            snapshot_ =
              com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.newBuilder(snapshot_).mergeFrom(value).buildPartial();
          } else {
            snapshot_ = value;
          }
          onChanged();
        } else {
          snapshotBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * 读取快照，只有作为 top plan 时填写
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.Transaction snapshot = 1;</code>
       */
      public Builder clearSnapshot() {
        if (snapshotBuilder_ == null) {
          snapshot_ = null;
          onChanged();
        } else {
          snapshotBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <pre>
       * 读取快照，只有作为 top plan 时填写
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.Transaction snapshot = 1;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.Builder getSnapshotBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getSnapshotFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * 读取快照，只有作为 top plan 时填写
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.Transaction snapshot = 1;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.TransactionOrBuilder getSnapshotOrBuilder() {
        if (snapshotBuilder_ != null) {
          return snapshotBuilder_.getMessageOrBuilder();
        } else {
          return snapshot_ == null ?
              com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.getDefaultInstance() : snapshot_;
        }
      }
      /**
       * <pre>
       * 读取快照，只有作为 top plan 时填写
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.Transaction snapshot = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction, com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.TransactionOrBuilder> 
          getSnapshotFieldBuilder() {
        if (snapshotBuilder_ == null) {
          snapshotBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction, com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.TransactionOrBuilder>(
                  getSnapshot(),
                  getParentForChildren(),
                  isClean());
          snapshot_ = null;
        }
        return snapshotBuilder_;
      }

      private com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo tableInfo_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo, com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfoOrBuilder> tableInfoBuilder_;
      /**
       * <pre>
       * 读取的目标 table
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.TableInfo table_info = 3;</code>
       * @return Whether the tableInfo field is set.
       */
      public boolean hasTableInfo() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * 读取的目标 table
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.TableInfo table_info = 3;</code>
       * @return The tableInfo.
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo getTableInfo() {
        if (tableInfoBuilder_ == null) {
          return tableInfo_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.getDefaultInstance() : tableInfo_;
        } else {
          return tableInfoBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * 读取的目标 table
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.TableInfo table_info = 3;</code>
       */
      public Builder setTableInfo(com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo value) {
        if (tableInfoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          tableInfo_ = value;
          onChanged();
        } else {
          tableInfoBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * 读取的目标 table
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.TableInfo table_info = 3;</code>
       */
      public Builder setTableInfo(
          com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.Builder builderForValue) {
        if (tableInfoBuilder_ == null) {
          tableInfo_ = builderForValue.build();
          onChanged();
        } else {
          tableInfoBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * 读取的目标 table
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.TableInfo table_info = 3;</code>
       */
      public Builder mergeTableInfo(com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo value) {
        if (tableInfoBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
              tableInfo_ != null &&
              tableInfo_ != com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.getDefaultInstance()) {
            tableInfo_ =
              com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.newBuilder(tableInfo_).mergeFrom(value).buildPartial();
          } else {
            tableInfo_ = value;
          }
          onChanged();
        } else {
          tableInfoBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <pre>
       * 读取的目标 table
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.TableInfo table_info = 3;</code>
       */
      public Builder clearTableInfo() {
        if (tableInfoBuilder_ == null) {
          tableInfo_ = null;
          onChanged();
        } else {
          tableInfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      /**
       * <pre>
       * 读取的目标 table
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.TableInfo table_info = 3;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.Builder getTableInfoBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getTableInfoFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * 读取的目标 table
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.TableInfo table_info = 3;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfoOrBuilder getTableInfoOrBuilder() {
        if (tableInfoBuilder_ != null) {
          return tableInfoBuilder_.getMessageOrBuilder();
        } else {
          return tableInfo_ == null ?
              com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.getDefaultInstance() : tableInfo_;
        }
      }
      /**
       * <pre>
       * 读取的目标 table
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.TableInfo table_info = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo, com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfoOrBuilder> 
          getTableInfoFieldBuilder() {
        if (tableInfoBuilder_ == null) {
          tableInfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo, com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfo.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.TableInfoOrBuilder>(
                  getTableInfo(),
                  getParentForChildren(),
                  isClean());
          tableInfo_ = null;
        }
        return tableInfoBuilder_;
      }

      private com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo indexInfo_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo, com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfoOrBuilder> indexInfoBuilder_;
      /**
       * <pre>
       * 读取的目标 index
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 4;</code>
       * @return Whether the indexInfo field is set.
       */
      public boolean hasIndexInfo() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * 读取的目标 index
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 4;</code>
       * @return The indexInfo.
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo getIndexInfo() {
        if (indexInfoBuilder_ == null) {
          return indexInfo_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.getDefaultInstance() : indexInfo_;
        } else {
          return indexInfoBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * 读取的目标 index
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 4;</code>
       */
      public Builder setIndexInfo(com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo value) {
        if (indexInfoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          indexInfo_ = value;
          onChanged();
        } else {
          indexInfoBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <pre>
       * 读取的目标 index
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 4;</code>
       */
      public Builder setIndexInfo(
          com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.Builder builderForValue) {
        if (indexInfoBuilder_ == null) {
          indexInfo_ = builderForValue.build();
          onChanged();
        } else {
          indexInfoBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <pre>
       * 读取的目标 index
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 4;</code>
       */
      public Builder mergeIndexInfo(com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo value) {
        if (indexInfoBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
              indexInfo_ != null &&
              indexInfo_ != com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.getDefaultInstance()) {
            indexInfo_ =
              com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.newBuilder(indexInfo_).mergeFrom(value).buildPartial();
          } else {
            indexInfo_ = value;
          }
          onChanged();
        } else {
          indexInfoBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <pre>
       * 读取的目标 index
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 4;</code>
       */
      public Builder clearIndexInfo() {
        if (indexInfoBuilder_ == null) {
          indexInfo_ = null;
          onChanged();
        } else {
          indexInfoBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      /**
       * <pre>
       * 读取的目标 index
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 4;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.Builder getIndexInfoBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getIndexInfoFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * 读取的目标 index
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 4;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfoOrBuilder getIndexInfoOrBuilder() {
        if (indexInfoBuilder_ != null) {
          return indexInfoBuilder_.getMessageOrBuilder();
        } else {
          return indexInfo_ == null ?
              com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.getDefaultInstance() : indexInfo_;
        }
      }
      /**
       * <pre>
       * 读取的目标 index
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.IndexInfo index_info = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo, com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfoOrBuilder> 
          getIndexInfoFieldBuilder() {
        if (indexInfoBuilder_ == null) {
          indexInfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo, com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfo.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.IndexInfoOrBuilder>(
                  getIndexInfo(),
                  getParentForChildren(),
                  isClean());
          indexInfo_ = null;
        }
        return indexInfoBuilder_;
      }

      private com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr key_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr, com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.GetExprOrBuilder> keyBuilder_;
      /**
       * <code>optional .Polarx.ExecPlan.GetExpr key = 5;</code>
       * @return Whether the key field is set.
       */
      public boolean hasKey() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>optional .Polarx.ExecPlan.GetExpr key = 5;</code>
       * @return The key.
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr getKey() {
        if (keyBuilder_ == null) {
          return key_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.getDefaultInstance() : key_;
        } else {
          return keyBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .Polarx.ExecPlan.GetExpr key = 5;</code>
       */
      public Builder setKey(com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr value) {
        if (keyBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          key_ = value;
          onChanged();
        } else {
          keyBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.GetExpr key = 5;</code>
       */
      public Builder setKey(
          com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.Builder builderForValue) {
        if (keyBuilder_ == null) {
          key_ = builderForValue.build();
          onChanged();
        } else {
          keyBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.GetExpr key = 5;</code>
       */
      public Builder mergeKey(com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr value) {
        if (keyBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0) &&
              key_ != null &&
              key_ != com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.getDefaultInstance()) {
            key_ =
              com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.newBuilder(key_).mergeFrom(value).buildPartial();
          } else {
            key_ = value;
          }
          onChanged();
        } else {
          keyBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.GetExpr key = 5;</code>
       */
      public Builder clearKey() {
        if (keyBuilder_ == null) {
          key_ = null;
          onChanged();
        } else {
          keyBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.GetExpr key = 5;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.Builder getKeyBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getKeyFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .Polarx.ExecPlan.GetExpr key = 5;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.GetExprOrBuilder getKeyOrBuilder() {
        if (keyBuilder_ != null) {
          return keyBuilder_.getMessageOrBuilder();
        } else {
          return key_ == null ?
              com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.getDefaultInstance() : key_;
        }
      }
      /**
       * <code>optional .Polarx.ExecPlan.GetExpr key = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr, com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.GetExprOrBuilder> 
          getKeyFieldBuilder() {
        if (keyBuilder_ == null) {
          keyBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr, com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.GetExprOrBuilder>(
                  getKey(),
                  getParentForChildren(),
                  isClean());
          key_ = null;
        }
        return keyBuilder_;
      }

      private com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr endKey_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr, com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.GetExprOrBuilder> endKeyBuilder_;
      /**
       * <pre>
       * end 条件，可选
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.GetExpr end_key = 6;</code>
       * @return Whether the endKey field is set.
       */
      public boolean hasEndKey() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * end 条件，可选
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.GetExpr end_key = 6;</code>
       * @return The endKey.
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr getEndKey() {
        if (endKeyBuilder_ == null) {
          return endKey_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.getDefaultInstance() : endKey_;
        } else {
          return endKeyBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * end 条件，可选
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.GetExpr end_key = 6;</code>
       */
      public Builder setEndKey(com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr value) {
        if (endKeyBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          endKey_ = value;
          onChanged();
        } else {
          endKeyBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <pre>
       * end 条件，可选
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.GetExpr end_key = 6;</code>
       */
      public Builder setEndKey(
          com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.Builder builderForValue) {
        if (endKeyBuilder_ == null) {
          endKey_ = builderForValue.build();
          onChanged();
        } else {
          endKeyBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <pre>
       * end 条件，可选
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.GetExpr end_key = 6;</code>
       */
      public Builder mergeEndKey(com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr value) {
        if (endKeyBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
              endKey_ != null &&
              endKey_ != com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.getDefaultInstance()) {
            endKey_ =
              com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.newBuilder(endKey_).mergeFrom(value).buildPartial();
          } else {
            endKey_ = value;
          }
          onChanged();
        } else {
          endKeyBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <pre>
       * end 条件，可选
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.GetExpr end_key = 6;</code>
       */
      public Builder clearEndKey() {
        if (endKeyBuilder_ == null) {
          endKey_ = null;
          onChanged();
        } else {
          endKeyBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }
      /**
       * <pre>
       * end 条件，可选
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.GetExpr end_key = 6;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.Builder getEndKeyBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getEndKeyFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * end 条件，可选
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.GetExpr end_key = 6;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.GetExprOrBuilder getEndKeyOrBuilder() {
        if (endKeyBuilder_ != null) {
          return endKeyBuilder_.getMessageOrBuilder();
        } else {
          return endKey_ == null ?
              com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.getDefaultInstance() : endKey_;
        }
      }
      /**
       * <pre>
       * end 条件，可选
       * </pre>
       *
       * <code>optional .Polarx.ExecPlan.GetExpr end_key = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr, com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.GetExprOrBuilder> 
          getEndKeyFieldBuilder() {
        if (endKeyBuilder_ == null) {
          endKeyBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr, com.mysql.cj.x.protobuf.PolarxExecPlan.GetExpr.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.GetExprOrBuilder>(
                  getEndKey(),
                  getParentForChildren(),
                  isClean());
          endKey_ = null;
        }
        return endKeyBuilder_;
      }

      private boolean reverse_ ;
      /**
       * <pre>
       * 扫描顺序
       * </pre>
       *
       * <code>optional bool reverse = 8;</code>
       * @return Whether the reverse field is set.
       */
      public boolean hasReverse() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * 扫描顺序
       * </pre>
       *
       * <code>optional bool reverse = 8;</code>
       * @return The reverse.
       */
      public boolean getReverse() {
        return reverse_;
      }
      /**
       * <pre>
       * 扫描顺序
       * </pre>
       *
       * <code>optional bool reverse = 8;</code>
       * @param value The reverse to set.
       * @return This builder for chaining.
       */
      public Builder setReverse(boolean value) {
        bitField0_ |= 0x00000020;
        reverse_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 扫描顺序
       * </pre>
       *
       * <code>optional bool reverse = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearReverse() {
        bitField0_ = (bitField0_ & ~0x00000020);
        reverse_ = false;
        onChanged();
        return this;
      }

      private long flag_ ;
      /**
       * <pre>
       * 预留
       * </pre>
       *
       * <code>optional int64 flag = 9;</code>
       * @return Whether the flag field is set.
       */
      public boolean hasFlag() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * 预留
       * </pre>
       *
       * <code>optional int64 flag = 9;</code>
       * @return The flag.
       */
      public long getFlag() {
        return flag_;
      }
      /**
       * <pre>
       * 预留
       * </pre>
       *
       * <code>optional int64 flag = 9;</code>
       * @param value The flag to set.
       * @return This builder for chaining.
       */
      public Builder setFlag(long value) {
        bitField0_ |= 0x00000040;
        flag_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 预留
       * </pre>
       *
       * <code>optional int64 flag = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearFlag() {
        bitField0_ = (bitField0_ & ~0x00000040);
        flag_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Polarx.ExecPlan.RangeScan)
    }

    // @@protoc_insertion_point(class_scope:Polarx.ExecPlan.RangeScan)
    private static final com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan();
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<RangeScan>
        PARSER = new com.google.protobuf.AbstractParser<RangeScan>() {
      @java.lang.Override
      public RangeScan parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new RangeScan(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<RangeScan> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<RangeScan> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TableProjectOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Polarx.ExecPlan.TableProject)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * 只支持GET和SCAN两种就行
     * </pre>
     *
     * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
     * @return Whether the subReadPlan field is set.
     */
    boolean hasSubReadPlan();
    /**
     * <pre>
     * 只支持GET和SCAN两种就行
     * </pre>
     *
     * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
     * @return The subReadPlan.
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan getSubReadPlan();
    /**
     * <pre>
     * 只支持GET和SCAN两种就行
     * </pre>
     *
     * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlanOrBuilder getSubReadPlanOrBuilder();

    /**
     * <pre>
     * 支持列名和列id（int uint），从0开始
     * </pre>
     *
     * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
     */
    java.util.List<com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar> 
        getFieldsList();
    /**
     * <pre>
     * 支持列名和列id（int uint），从0开始
     * </pre>
     *
     * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
     */
    com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar getFields(int index);
    /**
     * <pre>
     * 支持列名和列id（int uint），从0开始
     * </pre>
     *
     * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
     */
    int getFieldsCount();
    /**
     * <pre>
     * 支持列名和列id（int uint），从0开始
     * </pre>
     *
     * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
     */
    java.util.List<? extends com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder> 
        getFieldsOrBuilderList();
    /**
     * <pre>
     * 支持列名和列id（int uint），从0开始
     * </pre>
     *
     * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
     */
    com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder getFieldsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code Polarx.ExecPlan.TableProject}
   */
  public  static final class TableProject extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Polarx.ExecPlan.TableProject)
      TableProjectOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TableProject.newBuilder() to construct.
    private TableProject(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TableProject() {
      fields_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new TableProject();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private TableProject(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) != 0)) {
                subBuilder = subReadPlan_.toBuilder();
              }
              subReadPlan_ = input.readMessage(com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(subReadPlan_);
                subReadPlan_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
                fields_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar>();
                mutable_bitField0_ |= 0x00000002;
              }
              fields_.add(
                  input.readMessage(com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.PARSER, extensionRegistry));
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) != 0)) {
          fields_ = java.util.Collections.unmodifiableList(fields_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_TableProject_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_TableProject_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject.class, com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject.Builder.class);
    }

    private int bitField0_;
    public static final int SUB_READ_PLAN_FIELD_NUMBER = 1;
    private com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan subReadPlan_;
    /**
     * <pre>
     * 只支持GET和SCAN两种就行
     * </pre>
     *
     * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
     * @return Whether the subReadPlan field is set.
     */
    public boolean hasSubReadPlan() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * 只支持GET和SCAN两种就行
     * </pre>
     *
     * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
     * @return The subReadPlan.
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan getSubReadPlan() {
      return subReadPlan_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.getDefaultInstance() : subReadPlan_;
    }
    /**
     * <pre>
     * 只支持GET和SCAN两种就行
     * </pre>
     *
     * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlanOrBuilder getSubReadPlanOrBuilder() {
      return subReadPlan_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.getDefaultInstance() : subReadPlan_;
    }

    public static final int FIELDS_FIELD_NUMBER = 2;
    private java.util.List<com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar> fields_;
    /**
     * <pre>
     * 支持列名和列id（int uint），从0开始
     * </pre>
     *
     * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
     */
    public java.util.List<com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar> getFieldsList() {
      return fields_;
    }
    /**
     * <pre>
     * 支持列名和列id（int uint），从0开始
     * </pre>
     *
     * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
     */
    public java.util.List<? extends com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder> 
        getFieldsOrBuilderList() {
      return fields_;
    }
    /**
     * <pre>
     * 支持列名和列id（int uint），从0开始
     * </pre>
     *
     * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
     */
    public int getFieldsCount() {
      return fields_.size();
    }
    /**
     * <pre>
     * 支持列名和列id（int uint），从0开始
     * </pre>
     *
     * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar getFields(int index) {
      return fields_.get(index);
    }
    /**
     * <pre>
     * 支持列名和列id（int uint），从0开始
     * </pre>
     *
     * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder getFieldsOrBuilder(
        int index) {
      return fields_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasSubReadPlan()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getSubReadPlan().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getFieldsCount(); i++) {
        if (!getFields(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getSubReadPlan());
      }
      for (int i = 0; i < fields_.size(); i++) {
        output.writeMessage(2, fields_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getSubReadPlan());
      }
      for (int i = 0; i < fields_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, fields_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject)) {
        return super.equals(obj);
      }
      com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject other = (com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject) obj;

      if (hasSubReadPlan() != other.hasSubReadPlan()) return false;
      if (hasSubReadPlan()) {
        if (!getSubReadPlan()
            .equals(other.getSubReadPlan())) return false;
      }
      if (!getFieldsList()
          .equals(other.getFieldsList())) return false;
        return unknownFields.equals(other.unknownFields);
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasSubReadPlan()) {
        hash = (37 * hash) + SUB_READ_PLAN_FIELD_NUMBER;
        hash = (53 * hash) + getSubReadPlan().hashCode();
      }
      if (getFieldsCount() > 0) {
        hash = (37 * hash) + FIELDS_FIELD_NUMBER;
        hash = (53 * hash) + getFieldsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Polarx.ExecPlan.TableProject}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Polarx.ExecPlan.TableProject)
        com.mysql.cj.x.protobuf.PolarxExecPlan.TableProjectOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_TableProject_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_TableProject_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject.class, com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject.Builder.class);
      }

      // Construct using com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getSubReadPlanFieldBuilder();
          getFieldsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (subReadPlanBuilder_ == null) {
          subReadPlan_ = null;
        } else {
          subReadPlanBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (fieldsBuilder_ == null) {
          fields_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          fieldsBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_TableProject_descriptor;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject getDefaultInstanceForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject.getDefaultInstance();
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject build() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject buildPartial() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject result = new com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          if (subReadPlanBuilder_ == null) {
            result.subReadPlan_ = subReadPlan_;
          } else {
            result.subReadPlan_ = subReadPlanBuilder_.build();
          }
          to_bitField0_ |= 0x00000001;
        }
        if (fieldsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            fields_ = java.util.Collections.unmodifiableList(fields_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.fields_ = fields_;
        } else {
          result.fields_ = fieldsBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject) {
          return mergeFrom((com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject other) {
        if (other == com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject.getDefaultInstance()) return this;
        if (other.hasSubReadPlan()) {
          mergeSubReadPlan(other.getSubReadPlan());
        }
        if (fieldsBuilder_ == null) {
          if (!other.fields_.isEmpty()) {
            if (fields_.isEmpty()) {
              fields_ = other.fields_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureFieldsIsMutable();
              fields_.addAll(other.fields_);
            }
            onChanged();
          }
        } else {
          if (!other.fields_.isEmpty()) {
            if (fieldsBuilder_.isEmpty()) {
              fieldsBuilder_.dispose();
              fieldsBuilder_ = null;
              fields_ = other.fields_;
              bitField0_ = (bitField0_ & ~0x00000002);
              fieldsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getFieldsFieldBuilder() : null;
            } else {
              fieldsBuilder_.addAllMessages(other.fields_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasSubReadPlan()) {
          return false;
        }
        if (!getSubReadPlan().isInitialized()) {
          return false;
        }
        for (int i = 0; i < getFieldsCount(); i++) {
          if (!getFields(i).isInitialized()) {
            return false;
          }
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan subReadPlan_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan, com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlanOrBuilder> subReadPlanBuilder_;
      /**
       * <pre>
       * 只支持GET和SCAN两种就行
       * </pre>
       *
       * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
       * @return Whether the subReadPlan field is set.
       */
      public boolean hasSubReadPlan() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * 只支持GET和SCAN两种就行
       * </pre>
       *
       * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
       * @return The subReadPlan.
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan getSubReadPlan() {
        if (subReadPlanBuilder_ == null) {
          return subReadPlan_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.getDefaultInstance() : subReadPlan_;
        } else {
          return subReadPlanBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * 只支持GET和SCAN两种就行
       * </pre>
       *
       * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
       */
      public Builder setSubReadPlan(com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan value) {
        if (subReadPlanBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          subReadPlan_ = value;
          onChanged();
        } else {
          subReadPlanBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * 只支持GET和SCAN两种就行
       * </pre>
       *
       * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
       */
      public Builder setSubReadPlan(
          com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.Builder builderForValue) {
        if (subReadPlanBuilder_ == null) {
          subReadPlan_ = builderForValue.build();
          onChanged();
        } else {
          subReadPlanBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * 只支持GET和SCAN两种就行
       * </pre>
       *
       * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
       */
      public Builder mergeSubReadPlan(com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan value) {
        if (subReadPlanBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
              subReadPlan_ != null &&
              subReadPlan_ != com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.getDefaultInstance()) {
            subReadPlan_ =
              com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.newBuilder(subReadPlan_).mergeFrom(value).buildPartial();
          } else {
            subReadPlan_ = value;
          }
          onChanged();
        } else {
          subReadPlanBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * 只支持GET和SCAN两种就行
       * </pre>
       *
       * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
       */
      public Builder clearSubReadPlan() {
        if (subReadPlanBuilder_ == null) {
          subReadPlan_ = null;
          onChanged();
        } else {
          subReadPlanBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <pre>
       * 只支持GET和SCAN两种就行
       * </pre>
       *
       * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.Builder getSubReadPlanBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getSubReadPlanFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * 只支持GET和SCAN两种就行
       * </pre>
       *
       * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlanOrBuilder getSubReadPlanOrBuilder() {
        if (subReadPlanBuilder_ != null) {
          return subReadPlanBuilder_.getMessageOrBuilder();
        } else {
          return subReadPlan_ == null ?
              com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.getDefaultInstance() : subReadPlan_;
        }
      }
      /**
       * <pre>
       * 只支持GET和SCAN两种就行
       * </pre>
       *
       * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan, com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlanOrBuilder> 
          getSubReadPlanFieldBuilder() {
        if (subReadPlanBuilder_ == null) {
          subReadPlanBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan, com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlanOrBuilder>(
                  getSubReadPlan(),
                  getParentForChildren(),
                  isClean());
          subReadPlan_ = null;
        }
        return subReadPlanBuilder_;
      }

      private java.util.List<com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar> fields_ =
        java.util.Collections.emptyList();
      private void ensureFieldsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          fields_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar>(fields_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder, com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder> fieldsBuilder_;

      /**
       * <pre>
       * 支持列名和列id（int uint），从0开始
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
       */
      public java.util.List<com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar> getFieldsList() {
        if (fieldsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(fields_);
        } else {
          return fieldsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * 支持列名和列id（int uint），从0开始
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
       */
      public int getFieldsCount() {
        if (fieldsBuilder_ == null) {
          return fields_.size();
        } else {
          return fieldsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * 支持列名和列id（int uint），从0开始
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar getFields(int index) {
        if (fieldsBuilder_ == null) {
          return fields_.get(index);
        } else {
          return fieldsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * 支持列名和列id（int uint），从0开始
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
       */
      public Builder setFields(
          int index, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar value) {
        if (fieldsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFieldsIsMutable();
          fields_.set(index, value);
          onChanged();
        } else {
          fieldsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * 支持列名和列id（int uint），从0开始
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
       */
      public Builder setFields(
          int index, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder builderForValue) {
        if (fieldsBuilder_ == null) {
          ensureFieldsIsMutable();
          fields_.set(index, builderForValue.build());
          onChanged();
        } else {
          fieldsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * 支持列名和列id（int uint），从0开始
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
       */
      public Builder addFields(com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar value) {
        if (fieldsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFieldsIsMutable();
          fields_.add(value);
          onChanged();
        } else {
          fieldsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * 支持列名和列id（int uint），从0开始
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
       */
      public Builder addFields(
          int index, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar value) {
        if (fieldsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFieldsIsMutable();
          fields_.add(index, value);
          onChanged();
        } else {
          fieldsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * 支持列名和列id（int uint），从0开始
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
       */
      public Builder addFields(
          com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder builderForValue) {
        if (fieldsBuilder_ == null) {
          ensureFieldsIsMutable();
          fields_.add(builderForValue.build());
          onChanged();
        } else {
          fieldsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * 支持列名和列id（int uint），从0开始
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
       */
      public Builder addFields(
          int index, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder builderForValue) {
        if (fieldsBuilder_ == null) {
          ensureFieldsIsMutable();
          fields_.add(index, builderForValue.build());
          onChanged();
        } else {
          fieldsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * 支持列名和列id（int uint），从0开始
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
       */
      public Builder addAllFields(
          java.lang.Iterable<? extends com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar> values) {
        if (fieldsBuilder_ == null) {
          ensureFieldsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, fields_);
          onChanged();
        } else {
          fieldsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * 支持列名和列id（int uint），从0开始
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
       */
      public Builder clearFields() {
        if (fieldsBuilder_ == null) {
          fields_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          fieldsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * 支持列名和列id（int uint），从0开始
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
       */
      public Builder removeFields(int index) {
        if (fieldsBuilder_ == null) {
          ensureFieldsIsMutable();
          fields_.remove(index);
          onChanged();
        } else {
          fieldsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * 支持列名和列id（int uint），从0开始
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder getFieldsBuilder(
          int index) {
        return getFieldsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * 支持列名和列id（int uint），从0开始
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder getFieldsOrBuilder(
          int index) {
        if (fieldsBuilder_ == null) {
          return fields_.get(index);  } else {
          return fieldsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * 支持列名和列id（int uint），从0开始
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
       */
      public java.util.List<? extends com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder> 
           getFieldsOrBuilderList() {
        if (fieldsBuilder_ != null) {
          return fieldsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(fields_);
        }
      }
      /**
       * <pre>
       * 支持列名和列id（int uint），从0开始
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder addFieldsBuilder() {
        return getFieldsFieldBuilder().addBuilder(
            com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.getDefaultInstance());
      }
      /**
       * <pre>
       * 支持列名和列id（int uint），从0开始
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder addFieldsBuilder(
          int index) {
        return getFieldsFieldBuilder().addBuilder(
            index, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.getDefaultInstance());
      }
      /**
       * <pre>
       * 支持列名和列id（int uint），从0开始
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
       */
      public java.util.List<com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder> 
           getFieldsBuilderList() {
        return getFieldsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder, com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder> 
          getFieldsFieldBuilder() {
        if (fieldsBuilder_ == null) {
          fieldsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder, com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder>(
                  fields_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          fields_ = null;
        }
        return fieldsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Polarx.ExecPlan.TableProject)
    }

    // @@protoc_insertion_point(class_scope:Polarx.ExecPlan.TableProject)
    private static final com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject();
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<TableProject>
        PARSER = new com.google.protobuf.AbstractParser<TableProject>() {
      @java.lang.Override
      public TableProject parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new TableProject(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<TableProject> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<TableProject> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ProjectOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Polarx.ExecPlan.Project)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
     * @return Whether the subReadPlan field is set.
     */
    boolean hasSubReadPlan();
    /**
     * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
     * @return The subReadPlan.
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan getSubReadPlan();
    /**
     * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlanOrBuilder getSubReadPlanOrBuilder();

    /**
     * <pre>
     * 输出列名
     * </pre>
     *
     * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
     */
    java.util.List<com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar> 
        getFieldsList();
    /**
     * <pre>
     * 输出列名
     * </pre>
     *
     * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
     */
    com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar getFields(int index);
    /**
     * <pre>
     * 输出列名
     * </pre>
     *
     * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
     */
    int getFieldsCount();
    /**
     * <pre>
     * 输出列名
     * </pre>
     *
     * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
     */
    java.util.List<? extends com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder> 
        getFieldsOrBuilderList();
    /**
     * <pre>
     * 输出列名
     * </pre>
     *
     * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
     */
    com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder getFieldsOrBuilder(
        int index);

    /**
     * <pre>
     * 支持使用Expr全部功能，包括新增的ref，引用sub_read_plan的输出
     * </pre>
     *
     * <code>repeated .Polarx.Expr.Expr exprs = 3;</code>
     */
    java.util.List<com.mysql.cj.x.protobuf.PolarxExpr.Expr> 
        getExprsList();
    /**
     * <pre>
     * 支持使用Expr全部功能，包括新增的ref，引用sub_read_plan的输出
     * </pre>
     *
     * <code>repeated .Polarx.Expr.Expr exprs = 3;</code>
     */
    com.mysql.cj.x.protobuf.PolarxExpr.Expr getExprs(int index);
    /**
     * <pre>
     * 支持使用Expr全部功能，包括新增的ref，引用sub_read_plan的输出
     * </pre>
     *
     * <code>repeated .Polarx.Expr.Expr exprs = 3;</code>
     */
    int getExprsCount();
    /**
     * <pre>
     * 支持使用Expr全部功能，包括新增的ref，引用sub_read_plan的输出
     * </pre>
     *
     * <code>repeated .Polarx.Expr.Expr exprs = 3;</code>
     */
    java.util.List<? extends com.mysql.cj.x.protobuf.PolarxExpr.ExprOrBuilder> 
        getExprsOrBuilderList();
    /**
     * <pre>
     * 支持使用Expr全部功能，包括新增的ref，引用sub_read_plan的输出
     * </pre>
     *
     * <code>repeated .Polarx.Expr.Expr exprs = 3;</code>
     */
    com.mysql.cj.x.protobuf.PolarxExpr.ExprOrBuilder getExprsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code Polarx.ExecPlan.Project}
   */
  public  static final class Project extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Polarx.ExecPlan.Project)
      ProjectOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Project.newBuilder() to construct.
    private Project(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Project() {
      fields_ = java.util.Collections.emptyList();
      exprs_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Project();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Project(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) != 0)) {
                subBuilder = subReadPlan_.toBuilder();
              }
              subReadPlan_ = input.readMessage(com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(subReadPlan_);
                subReadPlan_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
                fields_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar>();
                mutable_bitField0_ |= 0x00000002;
              }
              fields_.add(
                  input.readMessage(com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.PARSER, extensionRegistry));
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000004) != 0)) {
                exprs_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.PolarxExpr.Expr>();
                mutable_bitField0_ |= 0x00000004;
              }
              exprs_.add(
                  input.readMessage(com.mysql.cj.x.protobuf.PolarxExpr.Expr.PARSER, extensionRegistry));
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) != 0)) {
          fields_ = java.util.Collections.unmodifiableList(fields_);
        }
        if (((mutable_bitField0_ & 0x00000004) != 0)) {
          exprs_ = java.util.Collections.unmodifiableList(exprs_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_Project_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_Project_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.mysql.cj.x.protobuf.PolarxExecPlan.Project.class, com.mysql.cj.x.protobuf.PolarxExecPlan.Project.Builder.class);
    }

    private int bitField0_;
    public static final int SUB_READ_PLAN_FIELD_NUMBER = 1;
    private com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan subReadPlan_;
    /**
     * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
     * @return Whether the subReadPlan field is set.
     */
    public boolean hasSubReadPlan() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
     * @return The subReadPlan.
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan getSubReadPlan() {
      return subReadPlan_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.getDefaultInstance() : subReadPlan_;
    }
    /**
     * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlanOrBuilder getSubReadPlanOrBuilder() {
      return subReadPlan_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.getDefaultInstance() : subReadPlan_;
    }

    public static final int FIELDS_FIELD_NUMBER = 2;
    private java.util.List<com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar> fields_;
    /**
     * <pre>
     * 输出列名
     * </pre>
     *
     * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
     */
    public java.util.List<com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar> getFieldsList() {
      return fields_;
    }
    /**
     * <pre>
     * 输出列名
     * </pre>
     *
     * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
     */
    public java.util.List<? extends com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder> 
        getFieldsOrBuilderList() {
      return fields_;
    }
    /**
     * <pre>
     * 输出列名
     * </pre>
     *
     * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
     */
    public int getFieldsCount() {
      return fields_.size();
    }
    /**
     * <pre>
     * 输出列名
     * </pre>
     *
     * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar getFields(int index) {
      return fields_.get(index);
    }
    /**
     * <pre>
     * 输出列名
     * </pre>
     *
     * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder getFieldsOrBuilder(
        int index) {
      return fields_.get(index);
    }

    public static final int EXPRS_FIELD_NUMBER = 3;
    private java.util.List<com.mysql.cj.x.protobuf.PolarxExpr.Expr> exprs_;
    /**
     * <pre>
     * 支持使用Expr全部功能，包括新增的ref，引用sub_read_plan的输出
     * </pre>
     *
     * <code>repeated .Polarx.Expr.Expr exprs = 3;</code>
     */
    public java.util.List<com.mysql.cj.x.protobuf.PolarxExpr.Expr> getExprsList() {
      return exprs_;
    }
    /**
     * <pre>
     * 支持使用Expr全部功能，包括新增的ref，引用sub_read_plan的输出
     * </pre>
     *
     * <code>repeated .Polarx.Expr.Expr exprs = 3;</code>
     */
    public java.util.List<? extends com.mysql.cj.x.protobuf.PolarxExpr.ExprOrBuilder> 
        getExprsOrBuilderList() {
      return exprs_;
    }
    /**
     * <pre>
     * 支持使用Expr全部功能，包括新增的ref，引用sub_read_plan的输出
     * </pre>
     *
     * <code>repeated .Polarx.Expr.Expr exprs = 3;</code>
     */
    public int getExprsCount() {
      return exprs_.size();
    }
    /**
     * <pre>
     * 支持使用Expr全部功能，包括新增的ref，引用sub_read_plan的输出
     * </pre>
     *
     * <code>repeated .Polarx.Expr.Expr exprs = 3;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxExpr.Expr getExprs(int index) {
      return exprs_.get(index);
    }
    /**
     * <pre>
     * 支持使用Expr全部功能，包括新增的ref，引用sub_read_plan的输出
     * </pre>
     *
     * <code>repeated .Polarx.Expr.Expr exprs = 3;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxExpr.ExprOrBuilder getExprsOrBuilder(
        int index) {
      return exprs_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasSubReadPlan()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getSubReadPlan().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getFieldsCount(); i++) {
        if (!getFields(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getExprsCount(); i++) {
        if (!getExprs(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getSubReadPlan());
      }
      for (int i = 0; i < fields_.size(); i++) {
        output.writeMessage(2, fields_.get(i));
      }
      for (int i = 0; i < exprs_.size(); i++) {
        output.writeMessage(3, exprs_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getSubReadPlan());
      }
      for (int i = 0; i < fields_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, fields_.get(i));
      }
      for (int i = 0; i < exprs_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, exprs_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.Project)) {
        return super.equals(obj);
      }
      com.mysql.cj.x.protobuf.PolarxExecPlan.Project other = (com.mysql.cj.x.protobuf.PolarxExecPlan.Project) obj;

      if (hasSubReadPlan() != other.hasSubReadPlan()) return false;
      if (hasSubReadPlan()) {
        if (!getSubReadPlan()
            .equals(other.getSubReadPlan())) return false;
      }
      if (!getFieldsList()
          .equals(other.getFieldsList())) return false;
      if (!getExprsList()
          .equals(other.getExprsList())) return false;
        return unknownFields.equals(other.unknownFields);
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasSubReadPlan()) {
        hash = (37 * hash) + SUB_READ_PLAN_FIELD_NUMBER;
        hash = (53 * hash) + getSubReadPlan().hashCode();
      }
      if (getFieldsCount() > 0) {
        hash = (37 * hash) + FIELDS_FIELD_NUMBER;
        hash = (53 * hash) + getFieldsList().hashCode();
      }
      if (getExprsCount() > 0) {
        hash = (37 * hash) + EXPRS_FIELD_NUMBER;
        hash = (53 * hash) + getExprsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Project parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Project parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Project parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Project parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Project parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Project parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Project parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Project parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Project parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Project parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Project parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Project parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.mysql.cj.x.protobuf.PolarxExecPlan.Project prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Polarx.ExecPlan.Project}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Polarx.ExecPlan.Project)
        com.mysql.cj.x.protobuf.PolarxExecPlan.ProjectOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_Project_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_Project_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.mysql.cj.x.protobuf.PolarxExecPlan.Project.class, com.mysql.cj.x.protobuf.PolarxExecPlan.Project.Builder.class);
      }

      // Construct using com.mysql.cj.x.protobuf.PolarxExecPlan.Project.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getSubReadPlanFieldBuilder();
          getFieldsFieldBuilder();
          getExprsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (subReadPlanBuilder_ == null) {
          subReadPlan_ = null;
        } else {
          subReadPlanBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (fieldsBuilder_ == null) {
          fields_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          fieldsBuilder_.clear();
        }
        if (exprsBuilder_ == null) {
          exprs_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
        } else {
          exprsBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_Project_descriptor;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.Project getDefaultInstanceForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.Project.getDefaultInstance();
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.Project build() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.Project result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.Project buildPartial() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.Project result = new com.mysql.cj.x.protobuf.PolarxExecPlan.Project(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          if (subReadPlanBuilder_ == null) {
            result.subReadPlan_ = subReadPlan_;
          } else {
            result.subReadPlan_ = subReadPlanBuilder_.build();
          }
          to_bitField0_ |= 0x00000001;
        }
        if (fieldsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            fields_ = java.util.Collections.unmodifiableList(fields_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.fields_ = fields_;
        } else {
          result.fields_ = fieldsBuilder_.build();
        }
        if (exprsBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0)) {
            exprs_ = java.util.Collections.unmodifiableList(exprs_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.exprs_ = exprs_;
        } else {
          result.exprs_ = exprsBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.Project) {
          return mergeFrom((com.mysql.cj.x.protobuf.PolarxExecPlan.Project)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.mysql.cj.x.protobuf.PolarxExecPlan.Project other) {
        if (other == com.mysql.cj.x.protobuf.PolarxExecPlan.Project.getDefaultInstance()) return this;
        if (other.hasSubReadPlan()) {
          mergeSubReadPlan(other.getSubReadPlan());
        }
        if (fieldsBuilder_ == null) {
          if (!other.fields_.isEmpty()) {
            if (fields_.isEmpty()) {
              fields_ = other.fields_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureFieldsIsMutable();
              fields_.addAll(other.fields_);
            }
            onChanged();
          }
        } else {
          if (!other.fields_.isEmpty()) {
            if (fieldsBuilder_.isEmpty()) {
              fieldsBuilder_.dispose();
              fieldsBuilder_ = null;
              fields_ = other.fields_;
              bitField0_ = (bitField0_ & ~0x00000002);
              fieldsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getFieldsFieldBuilder() : null;
            } else {
              fieldsBuilder_.addAllMessages(other.fields_);
            }
          }
        }
        if (exprsBuilder_ == null) {
          if (!other.exprs_.isEmpty()) {
            if (exprs_.isEmpty()) {
              exprs_ = other.exprs_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureExprsIsMutable();
              exprs_.addAll(other.exprs_);
            }
            onChanged();
          }
        } else {
          if (!other.exprs_.isEmpty()) {
            if (exprsBuilder_.isEmpty()) {
              exprsBuilder_.dispose();
              exprsBuilder_ = null;
              exprs_ = other.exprs_;
              bitField0_ = (bitField0_ & ~0x00000004);
              exprsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getExprsFieldBuilder() : null;
            } else {
              exprsBuilder_.addAllMessages(other.exprs_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasSubReadPlan()) {
          return false;
        }
        if (!getSubReadPlan().isInitialized()) {
          return false;
        }
        for (int i = 0; i < getFieldsCount(); i++) {
          if (!getFields(i).isInitialized()) {
            return false;
          }
        }
        for (int i = 0; i < getExprsCount(); i++) {
          if (!getExprs(i).isInitialized()) {
            return false;
          }
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.mysql.cj.x.protobuf.PolarxExecPlan.Project parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.mysql.cj.x.protobuf.PolarxExecPlan.Project) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan subReadPlan_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan, com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlanOrBuilder> subReadPlanBuilder_;
      /**
       * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
       * @return Whether the subReadPlan field is set.
       */
      public boolean hasSubReadPlan() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
       * @return The subReadPlan.
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan getSubReadPlan() {
        if (subReadPlanBuilder_ == null) {
          return subReadPlan_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.getDefaultInstance() : subReadPlan_;
        } else {
          return subReadPlanBuilder_.getMessage();
        }
      }
      /**
       * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
       */
      public Builder setSubReadPlan(com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan value) {
        if (subReadPlanBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          subReadPlan_ = value;
          onChanged();
        } else {
          subReadPlanBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
       */
      public Builder setSubReadPlan(
          com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.Builder builderForValue) {
        if (subReadPlanBuilder_ == null) {
          subReadPlan_ = builderForValue.build();
          onChanged();
        } else {
          subReadPlanBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
       */
      public Builder mergeSubReadPlan(com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan value) {
        if (subReadPlanBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
              subReadPlan_ != null &&
              subReadPlan_ != com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.getDefaultInstance()) {
            subReadPlan_ =
              com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.newBuilder(subReadPlan_).mergeFrom(value).buildPartial();
          } else {
            subReadPlan_ = value;
          }
          onChanged();
        } else {
          subReadPlanBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
       */
      public Builder clearSubReadPlan() {
        if (subReadPlanBuilder_ == null) {
          subReadPlan_ = null;
          onChanged();
        } else {
          subReadPlanBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.Builder getSubReadPlanBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getSubReadPlanFieldBuilder().getBuilder();
      }
      /**
       * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlanOrBuilder getSubReadPlanOrBuilder() {
        if (subReadPlanBuilder_ != null) {
          return subReadPlanBuilder_.getMessageOrBuilder();
        } else {
          return subReadPlan_ == null ?
              com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.getDefaultInstance() : subReadPlan_;
        }
      }
      /**
       * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan, com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlanOrBuilder> 
          getSubReadPlanFieldBuilder() {
        if (subReadPlanBuilder_ == null) {
          subReadPlanBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan, com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlanOrBuilder>(
                  getSubReadPlan(),
                  getParentForChildren(),
                  isClean());
          subReadPlan_ = null;
        }
        return subReadPlanBuilder_;
      }

      private java.util.List<com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar> fields_ =
        java.util.Collections.emptyList();
      private void ensureFieldsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          fields_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar>(fields_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder, com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder> fieldsBuilder_;

      /**
       * <pre>
       * 输出列名
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
       */
      public java.util.List<com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar> getFieldsList() {
        if (fieldsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(fields_);
        } else {
          return fieldsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * 输出列名
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
       */
      public int getFieldsCount() {
        if (fieldsBuilder_ == null) {
          return fields_.size();
        } else {
          return fieldsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * 输出列名
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar getFields(int index) {
        if (fieldsBuilder_ == null) {
          return fields_.get(index);
        } else {
          return fieldsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * 输出列名
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
       */
      public Builder setFields(
          int index, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar value) {
        if (fieldsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFieldsIsMutable();
          fields_.set(index, value);
          onChanged();
        } else {
          fieldsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * 输出列名
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
       */
      public Builder setFields(
          int index, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder builderForValue) {
        if (fieldsBuilder_ == null) {
          ensureFieldsIsMutable();
          fields_.set(index, builderForValue.build());
          onChanged();
        } else {
          fieldsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * 输出列名
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
       */
      public Builder addFields(com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar value) {
        if (fieldsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFieldsIsMutable();
          fields_.add(value);
          onChanged();
        } else {
          fieldsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * 输出列名
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
       */
      public Builder addFields(
          int index, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar value) {
        if (fieldsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFieldsIsMutable();
          fields_.add(index, value);
          onChanged();
        } else {
          fieldsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * 输出列名
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
       */
      public Builder addFields(
          com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder builderForValue) {
        if (fieldsBuilder_ == null) {
          ensureFieldsIsMutable();
          fields_.add(builderForValue.build());
          onChanged();
        } else {
          fieldsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * 输出列名
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
       */
      public Builder addFields(
          int index, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder builderForValue) {
        if (fieldsBuilder_ == null) {
          ensureFieldsIsMutable();
          fields_.add(index, builderForValue.build());
          onChanged();
        } else {
          fieldsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * 输出列名
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
       */
      public Builder addAllFields(
          java.lang.Iterable<? extends com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar> values) {
        if (fieldsBuilder_ == null) {
          ensureFieldsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, fields_);
          onChanged();
        } else {
          fieldsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * 输出列名
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
       */
      public Builder clearFields() {
        if (fieldsBuilder_ == null) {
          fields_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          fieldsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * 输出列名
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
       */
      public Builder removeFields(int index) {
        if (fieldsBuilder_ == null) {
          ensureFieldsIsMutable();
          fields_.remove(index);
          onChanged();
        } else {
          fieldsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * 输出列名
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder getFieldsBuilder(
          int index) {
        return getFieldsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * 输出列名
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder getFieldsOrBuilder(
          int index) {
        if (fieldsBuilder_ == null) {
          return fields_.get(index);  } else {
          return fieldsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * 输出列名
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
       */
      public java.util.List<? extends com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder> 
           getFieldsOrBuilderList() {
        if (fieldsBuilder_ != null) {
          return fieldsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(fields_);
        }
      }
      /**
       * <pre>
       * 输出列名
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder addFieldsBuilder() {
        return getFieldsFieldBuilder().addBuilder(
            com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.getDefaultInstance());
      }
      /**
       * <pre>
       * 输出列名
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder addFieldsBuilder(
          int index) {
        return getFieldsFieldBuilder().addBuilder(
            index, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.getDefaultInstance());
      }
      /**
       * <pre>
       * 输出列名
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar fields = 2;</code>
       */
      public java.util.List<com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder> 
           getFieldsBuilderList() {
        return getFieldsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder, com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder> 
          getFieldsFieldBuilder() {
        if (fieldsBuilder_ == null) {
          fieldsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder, com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder>(
                  fields_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          fields_ = null;
        }
        return fieldsBuilder_;
      }

      private java.util.List<com.mysql.cj.x.protobuf.PolarxExpr.Expr> exprs_ =
        java.util.Collections.emptyList();
      private void ensureExprsIsMutable() {
        if (!((bitField0_ & 0x00000004) != 0)) {
          exprs_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.PolarxExpr.Expr>(exprs_);
          bitField0_ |= 0x00000004;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExpr.Expr, com.mysql.cj.x.protobuf.PolarxExpr.Expr.Builder, com.mysql.cj.x.protobuf.PolarxExpr.ExprOrBuilder> exprsBuilder_;

      /**
       * <pre>
       * 支持使用Expr全部功能，包括新增的ref，引用sub_read_plan的输出
       * </pre>
       *
       * <code>repeated .Polarx.Expr.Expr exprs = 3;</code>
       */
      public java.util.List<com.mysql.cj.x.protobuf.PolarxExpr.Expr> getExprsList() {
        if (exprsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(exprs_);
        } else {
          return exprsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * 支持使用Expr全部功能，包括新增的ref，引用sub_read_plan的输出
       * </pre>
       *
       * <code>repeated .Polarx.Expr.Expr exprs = 3;</code>
       */
      public int getExprsCount() {
        if (exprsBuilder_ == null) {
          return exprs_.size();
        } else {
          return exprsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * 支持使用Expr全部功能，包括新增的ref，引用sub_read_plan的输出
       * </pre>
       *
       * <code>repeated .Polarx.Expr.Expr exprs = 3;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExpr.Expr getExprs(int index) {
        if (exprsBuilder_ == null) {
          return exprs_.get(index);
        } else {
          return exprsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * 支持使用Expr全部功能，包括新增的ref，引用sub_read_plan的输出
       * </pre>
       *
       * <code>repeated .Polarx.Expr.Expr exprs = 3;</code>
       */
      public Builder setExprs(
          int index, com.mysql.cj.x.protobuf.PolarxExpr.Expr value) {
        if (exprsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureExprsIsMutable();
          exprs_.set(index, value);
          onChanged();
        } else {
          exprsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * 支持使用Expr全部功能，包括新增的ref，引用sub_read_plan的输出
       * </pre>
       *
       * <code>repeated .Polarx.Expr.Expr exprs = 3;</code>
       */
      public Builder setExprs(
          int index, com.mysql.cj.x.protobuf.PolarxExpr.Expr.Builder builderForValue) {
        if (exprsBuilder_ == null) {
          ensureExprsIsMutable();
          exprs_.set(index, builderForValue.build());
          onChanged();
        } else {
          exprsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * 支持使用Expr全部功能，包括新增的ref，引用sub_read_plan的输出
       * </pre>
       *
       * <code>repeated .Polarx.Expr.Expr exprs = 3;</code>
       */
      public Builder addExprs(com.mysql.cj.x.protobuf.PolarxExpr.Expr value) {
        if (exprsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureExprsIsMutable();
          exprs_.add(value);
          onChanged();
        } else {
          exprsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * 支持使用Expr全部功能，包括新增的ref，引用sub_read_plan的输出
       * </pre>
       *
       * <code>repeated .Polarx.Expr.Expr exprs = 3;</code>
       */
      public Builder addExprs(
          int index, com.mysql.cj.x.protobuf.PolarxExpr.Expr value) {
        if (exprsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureExprsIsMutable();
          exprs_.add(index, value);
          onChanged();
        } else {
          exprsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * 支持使用Expr全部功能，包括新增的ref，引用sub_read_plan的输出
       * </pre>
       *
       * <code>repeated .Polarx.Expr.Expr exprs = 3;</code>
       */
      public Builder addExprs(
          com.mysql.cj.x.protobuf.PolarxExpr.Expr.Builder builderForValue) {
        if (exprsBuilder_ == null) {
          ensureExprsIsMutable();
          exprs_.add(builderForValue.build());
          onChanged();
        } else {
          exprsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * 支持使用Expr全部功能，包括新增的ref，引用sub_read_plan的输出
       * </pre>
       *
       * <code>repeated .Polarx.Expr.Expr exprs = 3;</code>
       */
      public Builder addExprs(
          int index, com.mysql.cj.x.protobuf.PolarxExpr.Expr.Builder builderForValue) {
        if (exprsBuilder_ == null) {
          ensureExprsIsMutable();
          exprs_.add(index, builderForValue.build());
          onChanged();
        } else {
          exprsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * 支持使用Expr全部功能，包括新增的ref，引用sub_read_plan的输出
       * </pre>
       *
       * <code>repeated .Polarx.Expr.Expr exprs = 3;</code>
       */
      public Builder addAllExprs(
          java.lang.Iterable<? extends com.mysql.cj.x.protobuf.PolarxExpr.Expr> values) {
        if (exprsBuilder_ == null) {
          ensureExprsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, exprs_);
          onChanged();
        } else {
          exprsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * 支持使用Expr全部功能，包括新增的ref，引用sub_read_plan的输出
       * </pre>
       *
       * <code>repeated .Polarx.Expr.Expr exprs = 3;</code>
       */
      public Builder clearExprs() {
        if (exprsBuilder_ == null) {
          exprs_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          exprsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * 支持使用Expr全部功能，包括新增的ref，引用sub_read_plan的输出
       * </pre>
       *
       * <code>repeated .Polarx.Expr.Expr exprs = 3;</code>
       */
      public Builder removeExprs(int index) {
        if (exprsBuilder_ == null) {
          ensureExprsIsMutable();
          exprs_.remove(index);
          onChanged();
        } else {
          exprsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * 支持使用Expr全部功能，包括新增的ref，引用sub_read_plan的输出
       * </pre>
       *
       * <code>repeated .Polarx.Expr.Expr exprs = 3;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExpr.Expr.Builder getExprsBuilder(
          int index) {
        return getExprsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * 支持使用Expr全部功能，包括新增的ref，引用sub_read_plan的输出
       * </pre>
       *
       * <code>repeated .Polarx.Expr.Expr exprs = 3;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExpr.ExprOrBuilder getExprsOrBuilder(
          int index) {
        if (exprsBuilder_ == null) {
          return exprs_.get(index);  } else {
          return exprsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * 支持使用Expr全部功能，包括新增的ref，引用sub_read_plan的输出
       * </pre>
       *
       * <code>repeated .Polarx.Expr.Expr exprs = 3;</code>
       */
      public java.util.List<? extends com.mysql.cj.x.protobuf.PolarxExpr.ExprOrBuilder> 
           getExprsOrBuilderList() {
        if (exprsBuilder_ != null) {
          return exprsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(exprs_);
        }
      }
      /**
       * <pre>
       * 支持使用Expr全部功能，包括新增的ref，引用sub_read_plan的输出
       * </pre>
       *
       * <code>repeated .Polarx.Expr.Expr exprs = 3;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExpr.Expr.Builder addExprsBuilder() {
        return getExprsFieldBuilder().addBuilder(
            com.mysql.cj.x.protobuf.PolarxExpr.Expr.getDefaultInstance());
      }
      /**
       * <pre>
       * 支持使用Expr全部功能，包括新增的ref，引用sub_read_plan的输出
       * </pre>
       *
       * <code>repeated .Polarx.Expr.Expr exprs = 3;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExpr.Expr.Builder addExprsBuilder(
          int index) {
        return getExprsFieldBuilder().addBuilder(
            index, com.mysql.cj.x.protobuf.PolarxExpr.Expr.getDefaultInstance());
      }
      /**
       * <pre>
       * 支持使用Expr全部功能，包括新增的ref，引用sub_read_plan的输出
       * </pre>
       *
       * <code>repeated .Polarx.Expr.Expr exprs = 3;</code>
       */
      public java.util.List<com.mysql.cj.x.protobuf.PolarxExpr.Expr.Builder> 
           getExprsBuilderList() {
        return getExprsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExpr.Expr, com.mysql.cj.x.protobuf.PolarxExpr.Expr.Builder, com.mysql.cj.x.protobuf.PolarxExpr.ExprOrBuilder> 
          getExprsFieldBuilder() {
        if (exprsBuilder_ == null) {
          exprsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxExpr.Expr, com.mysql.cj.x.protobuf.PolarxExpr.Expr.Builder, com.mysql.cj.x.protobuf.PolarxExpr.ExprOrBuilder>(
                  exprs_,
                  ((bitField0_ & 0x00000004) != 0),
                  getParentForChildren(),
                  isClean());
          exprs_ = null;
        }
        return exprsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Polarx.ExecPlan.Project)
    }

    // @@protoc_insertion_point(class_scope:Polarx.ExecPlan.Project)
    private static final com.mysql.cj.x.protobuf.PolarxExecPlan.Project DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.mysql.cj.x.protobuf.PolarxExecPlan.Project();
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Project getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<Project>
        PARSER = new com.google.protobuf.AbstractParser<Project>() {
      @java.lang.Override
      public Project parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new Project(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<Project> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Project> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.mysql.cj.x.protobuf.PolarxExecPlan.Project getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface FilterOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Polarx.ExecPlan.Filter)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
     * @return Whether the subReadPlan field is set.
     */
    boolean hasSubReadPlan();
    /**
     * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
     * @return The subReadPlan.
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan getSubReadPlan();
    /**
     * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlanOrBuilder getSubReadPlanOrBuilder();

    /**
     * <code>required .Polarx.Expr.Expr expr = 2;</code>
     * @return Whether the expr field is set.
     */
    boolean hasExpr();
    /**
     * <code>required .Polarx.Expr.Expr expr = 2;</code>
     * @return The expr.
     */
    com.mysql.cj.x.protobuf.PolarxExpr.Expr getExpr();
    /**
     * <code>required .Polarx.Expr.Expr expr = 2;</code>
     */
    com.mysql.cj.x.protobuf.PolarxExpr.ExprOrBuilder getExprOrBuilder();
  }
  /**
   * Protobuf type {@code Polarx.ExecPlan.Filter}
   */
  public  static final class Filter extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Polarx.ExecPlan.Filter)
      FilterOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Filter.newBuilder() to construct.
    private Filter(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Filter() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Filter();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Filter(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) != 0)) {
                subBuilder = subReadPlan_.toBuilder();
              }
              subReadPlan_ = input.readMessage(com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(subReadPlan_);
                subReadPlan_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              com.mysql.cj.x.protobuf.PolarxExpr.Expr.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) != 0)) {
                subBuilder = expr_.toBuilder();
              }
              expr_ = input.readMessage(com.mysql.cj.x.protobuf.PolarxExpr.Expr.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(expr_);
                expr_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_Filter_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_Filter_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.mysql.cj.x.protobuf.PolarxExecPlan.Filter.class, com.mysql.cj.x.protobuf.PolarxExecPlan.Filter.Builder.class);
    }

    private int bitField0_;
    public static final int SUB_READ_PLAN_FIELD_NUMBER = 1;
    private com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan subReadPlan_;
    /**
     * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
     * @return Whether the subReadPlan field is set.
     */
    public boolean hasSubReadPlan() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
     * @return The subReadPlan.
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan getSubReadPlan() {
      return subReadPlan_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.getDefaultInstance() : subReadPlan_;
    }
    /**
     * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlanOrBuilder getSubReadPlanOrBuilder() {
      return subReadPlan_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.getDefaultInstance() : subReadPlan_;
    }

    public static final int EXPR_FIELD_NUMBER = 2;
    private com.mysql.cj.x.protobuf.PolarxExpr.Expr expr_;
    /**
     * <code>required .Polarx.Expr.Expr expr = 2;</code>
     * @return Whether the expr field is set.
     */
    public boolean hasExpr() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>required .Polarx.Expr.Expr expr = 2;</code>
     * @return The expr.
     */
    public com.mysql.cj.x.protobuf.PolarxExpr.Expr getExpr() {
      return expr_ == null ? com.mysql.cj.x.protobuf.PolarxExpr.Expr.getDefaultInstance() : expr_;
    }
    /**
     * <code>required .Polarx.Expr.Expr expr = 2;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxExpr.ExprOrBuilder getExprOrBuilder() {
      return expr_ == null ? com.mysql.cj.x.protobuf.PolarxExpr.Expr.getDefaultInstance() : expr_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasSubReadPlan()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasExpr()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getSubReadPlan().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getExpr().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getSubReadPlan());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getExpr());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getSubReadPlan());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getExpr());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.Filter)) {
        return super.equals(obj);
      }
      com.mysql.cj.x.protobuf.PolarxExecPlan.Filter other = (com.mysql.cj.x.protobuf.PolarxExecPlan.Filter) obj;

      if (hasSubReadPlan() != other.hasSubReadPlan()) return false;
      if (hasSubReadPlan()) {
        if (!getSubReadPlan()
            .equals(other.getSubReadPlan())) return false;
      }
      if (hasExpr() != other.hasExpr()) return false;
      if (hasExpr()) {
        if (!getExpr()
            .equals(other.getExpr())) return false;
      }
        return unknownFields.equals(other.unknownFields);
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasSubReadPlan()) {
        hash = (37 * hash) + SUB_READ_PLAN_FIELD_NUMBER;
        hash = (53 * hash) + getSubReadPlan().hashCode();
      }
      if (hasExpr()) {
        hash = (37 * hash) + EXPR_FIELD_NUMBER;
        hash = (53 * hash) + getExpr().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Filter parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Filter parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Filter parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Filter parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Filter parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Filter parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Filter parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Filter parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Filter parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Filter parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Filter parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Filter parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.mysql.cj.x.protobuf.PolarxExecPlan.Filter prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Polarx.ExecPlan.Filter}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Polarx.ExecPlan.Filter)
        com.mysql.cj.x.protobuf.PolarxExecPlan.FilterOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_Filter_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_Filter_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.mysql.cj.x.protobuf.PolarxExecPlan.Filter.class, com.mysql.cj.x.protobuf.PolarxExecPlan.Filter.Builder.class);
      }

      // Construct using com.mysql.cj.x.protobuf.PolarxExecPlan.Filter.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getSubReadPlanFieldBuilder();
          getExprFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (subReadPlanBuilder_ == null) {
          subReadPlan_ = null;
        } else {
          subReadPlanBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (exprBuilder_ == null) {
          expr_ = null;
        } else {
          exprBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_Filter_descriptor;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.Filter getDefaultInstanceForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.Filter.getDefaultInstance();
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.Filter build() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.Filter result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.Filter buildPartial() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.Filter result = new com.mysql.cj.x.protobuf.PolarxExecPlan.Filter(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          if (subReadPlanBuilder_ == null) {
            result.subReadPlan_ = subReadPlan_;
          } else {
            result.subReadPlan_ = subReadPlanBuilder_.build();
          }
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          if (exprBuilder_ == null) {
            result.expr_ = expr_;
          } else {
            result.expr_ = exprBuilder_.build();
          }
          to_bitField0_ |= 0x00000002;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.Filter) {
          return mergeFrom((com.mysql.cj.x.protobuf.PolarxExecPlan.Filter)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.mysql.cj.x.protobuf.PolarxExecPlan.Filter other) {
        if (other == com.mysql.cj.x.protobuf.PolarxExecPlan.Filter.getDefaultInstance()) return this;
        if (other.hasSubReadPlan()) {
          mergeSubReadPlan(other.getSubReadPlan());
        }
        if (other.hasExpr()) {
          mergeExpr(other.getExpr());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasSubReadPlan()) {
          return false;
        }
        if (!hasExpr()) {
          return false;
        }
        if (!getSubReadPlan().isInitialized()) {
          return false;
        }
          return getExpr().isInitialized();
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.mysql.cj.x.protobuf.PolarxExecPlan.Filter parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.mysql.cj.x.protobuf.PolarxExecPlan.Filter) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan subReadPlan_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan, com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlanOrBuilder> subReadPlanBuilder_;
      /**
       * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
       * @return Whether the subReadPlan field is set.
       */
      public boolean hasSubReadPlan() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
       * @return The subReadPlan.
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan getSubReadPlan() {
        if (subReadPlanBuilder_ == null) {
          return subReadPlan_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.getDefaultInstance() : subReadPlan_;
        } else {
          return subReadPlanBuilder_.getMessage();
        }
      }
      /**
       * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
       */
      public Builder setSubReadPlan(com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan value) {
        if (subReadPlanBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          subReadPlan_ = value;
          onChanged();
        } else {
          subReadPlanBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
       */
      public Builder setSubReadPlan(
          com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.Builder builderForValue) {
        if (subReadPlanBuilder_ == null) {
          subReadPlan_ = builderForValue.build();
          onChanged();
        } else {
          subReadPlanBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
       */
      public Builder mergeSubReadPlan(com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan value) {
        if (subReadPlanBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
              subReadPlan_ != null &&
              subReadPlan_ != com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.getDefaultInstance()) {
            subReadPlan_ =
              com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.newBuilder(subReadPlan_).mergeFrom(value).buildPartial();
          } else {
            subReadPlan_ = value;
          }
          onChanged();
        } else {
          subReadPlanBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
       */
      public Builder clearSubReadPlan() {
        if (subReadPlanBuilder_ == null) {
          subReadPlan_ = null;
          onChanged();
        } else {
          subReadPlanBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.Builder getSubReadPlanBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getSubReadPlanFieldBuilder().getBuilder();
      }
      /**
       * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlanOrBuilder getSubReadPlanOrBuilder() {
        if (subReadPlanBuilder_ != null) {
          return subReadPlanBuilder_.getMessageOrBuilder();
        } else {
          return subReadPlan_ == null ?
              com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.getDefaultInstance() : subReadPlan_;
        }
      }
      /**
       * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan, com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlanOrBuilder> 
          getSubReadPlanFieldBuilder() {
        if (subReadPlanBuilder_ == null) {
          subReadPlanBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan, com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlanOrBuilder>(
                  getSubReadPlan(),
                  getParentForChildren(),
                  isClean());
          subReadPlan_ = null;
        }
        return subReadPlanBuilder_;
      }

      private com.mysql.cj.x.protobuf.PolarxExpr.Expr expr_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExpr.Expr, com.mysql.cj.x.protobuf.PolarxExpr.Expr.Builder, com.mysql.cj.x.protobuf.PolarxExpr.ExprOrBuilder> exprBuilder_;
      /**
       * <code>required .Polarx.Expr.Expr expr = 2;</code>
       * @return Whether the expr field is set.
       */
      public boolean hasExpr() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required .Polarx.Expr.Expr expr = 2;</code>
       * @return The expr.
       */
      public com.mysql.cj.x.protobuf.PolarxExpr.Expr getExpr() {
        if (exprBuilder_ == null) {
          return expr_ == null ? com.mysql.cj.x.protobuf.PolarxExpr.Expr.getDefaultInstance() : expr_;
        } else {
          return exprBuilder_.getMessage();
        }
      }
      /**
       * <code>required .Polarx.Expr.Expr expr = 2;</code>
       */
      public Builder setExpr(com.mysql.cj.x.protobuf.PolarxExpr.Expr value) {
        if (exprBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          expr_ = value;
          onChanged();
        } else {
          exprBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .Polarx.Expr.Expr expr = 2;</code>
       */
      public Builder setExpr(
          com.mysql.cj.x.protobuf.PolarxExpr.Expr.Builder builderForValue) {
        if (exprBuilder_ == null) {
          expr_ = builderForValue.build();
          onChanged();
        } else {
          exprBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .Polarx.Expr.Expr expr = 2;</code>
       */
      public Builder mergeExpr(com.mysql.cj.x.protobuf.PolarxExpr.Expr value) {
        if (exprBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
              expr_ != null &&
              expr_ != com.mysql.cj.x.protobuf.PolarxExpr.Expr.getDefaultInstance()) {
            expr_ =
              com.mysql.cj.x.protobuf.PolarxExpr.Expr.newBuilder(expr_).mergeFrom(value).buildPartial();
          } else {
            expr_ = value;
          }
          onChanged();
        } else {
          exprBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .Polarx.Expr.Expr expr = 2;</code>
       */
      public Builder clearExpr() {
        if (exprBuilder_ == null) {
          expr_ = null;
          onChanged();
        } else {
          exprBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      /**
       * <code>required .Polarx.Expr.Expr expr = 2;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExpr.Expr.Builder getExprBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getExprFieldBuilder().getBuilder();
      }
      /**
       * <code>required .Polarx.Expr.Expr expr = 2;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExpr.ExprOrBuilder getExprOrBuilder() {
        if (exprBuilder_ != null) {
          return exprBuilder_.getMessageOrBuilder();
        } else {
          return expr_ == null ?
              com.mysql.cj.x.protobuf.PolarxExpr.Expr.getDefaultInstance() : expr_;
        }
      }
      /**
       * <code>required .Polarx.Expr.Expr expr = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExpr.Expr, com.mysql.cj.x.protobuf.PolarxExpr.Expr.Builder, com.mysql.cj.x.protobuf.PolarxExpr.ExprOrBuilder> 
          getExprFieldBuilder() {
        if (exprBuilder_ == null) {
          exprBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxExpr.Expr, com.mysql.cj.x.protobuf.PolarxExpr.Expr.Builder, com.mysql.cj.x.protobuf.PolarxExpr.ExprOrBuilder>(
                  getExpr(),
                  getParentForChildren(),
                  isClean());
          expr_ = null;
        }
        return exprBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Polarx.ExecPlan.Filter)
    }

    // @@protoc_insertion_point(class_scope:Polarx.ExecPlan.Filter)
    private static final com.mysql.cj.x.protobuf.PolarxExecPlan.Filter DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.mysql.cj.x.protobuf.PolarxExecPlan.Filter();
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Filter getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<Filter>
        PARSER = new com.google.protobuf.AbstractParser<Filter>() {
      @java.lang.Override
      public Filter parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new Filter(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<Filter> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Filter> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.mysql.cj.x.protobuf.PolarxExecPlan.Filter getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface AggrOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Polarx.ExecPlan.Aggr)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
     * @return Whether the subReadPlan field is set.
     */
    boolean hasSubReadPlan();
    /**
     * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
     * @return The subReadPlan.
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan getSubReadPlan();
    /**
     * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlanOrBuilder getSubReadPlanOrBuilder();

    /**
     * <pre>
     *聚集函数类型
     * </pre>
     *
     * <code>required .Polarx.ExecPlan.Aggr.AggrType type = 2;</code>
     * @return Whether the type field is set.
     */
    boolean hasType();
    /**
     * <pre>
     *聚集函数类型
     * </pre>
     *
     * <code>required .Polarx.ExecPlan.Aggr.AggrType type = 2;</code>
     * @return The type.
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr.AggrType getType();

    /**
     * <pre>
     *列名
     * </pre>
     *
     * <code>required .Polarx.Datatypes.Scalar field = 3;</code>
     * @return Whether the field field is set.
     */
    boolean hasField();
    /**
     * <pre>
     *列名
     * </pre>
     *
     * <code>required .Polarx.Datatypes.Scalar field = 3;</code>
     * @return The field.
     */
    com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar getField();
    /**
     * <pre>
     *列名
     * </pre>
     *
     * <code>required .Polarx.Datatypes.Scalar field = 3;</code>
     */
    com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder getFieldOrBuilder();

    /**
     * <pre>
     *聚集函数对应的表达式 
     * </pre>
     *
     * <code>required .Polarx.Expr.Expr expr = 4;</code>
     * @return Whether the expr field is set.
     */
    boolean hasExpr();
    /**
     * <pre>
     *聚集函数对应的表达式 
     * </pre>
     *
     * <code>required .Polarx.Expr.Expr expr = 4;</code>
     * @return The expr.
     */
    com.mysql.cj.x.protobuf.PolarxExpr.Expr getExpr();
    /**
     * <pre>
     *聚集函数对应的表达式 
     * </pre>
     *
     * <code>required .Polarx.Expr.Expr expr = 4;</code>
     */
    com.mysql.cj.x.protobuf.PolarxExpr.ExprOrBuilder getExprOrBuilder();
  }
  /**
   * Protobuf type {@code Polarx.ExecPlan.Aggr}
   */
  public  static final class Aggr extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Polarx.ExecPlan.Aggr)
      AggrOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Aggr.newBuilder() to construct.
    private Aggr(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Aggr() {
      type_ = 1;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new Aggr();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Aggr(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) != 0)) {
                subBuilder = subReadPlan_.toBuilder();
              }
              subReadPlan_ = input.readMessage(com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(subReadPlan_);
                subReadPlan_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 16: {
              int rawValue = input.readEnum();
                @SuppressWarnings("deprecation")
              com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr.AggrType value = com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr.AggrType.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(2, rawValue);
              } else {
                bitField0_ |= 0x00000002;
                type_ = rawValue;
              }
              break;
            }
            case 26: {
              com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) != 0)) {
                subBuilder = field_.toBuilder();
              }
              field_ = input.readMessage(com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(field_);
                field_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 34: {
              com.mysql.cj.x.protobuf.PolarxExpr.Expr.Builder subBuilder = null;
              if (((bitField0_ & 0x00000008) != 0)) {
                subBuilder = expr_.toBuilder();
              }
              expr_ = input.readMessage(com.mysql.cj.x.protobuf.PolarxExpr.Expr.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(expr_);
                expr_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000008;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_Aggr_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_Aggr_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr.class, com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr.Builder.class);
    }

    /**
     * Protobuf enum {@code Polarx.ExecPlan.Aggr.AggrType}
     */
    public enum AggrType
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <pre>
       * COUNT
       * </pre>
       *
       * <code>COUNT_FUNC = 1;</code>
       */
      COUNT_FUNC(1),
      /**
       * <pre>
       * COUNT(DISTINCT)
       * </pre>
       *
       * <code>COUNT_DISTINCT_FUNC = 2;</code>
       */
      COUNT_DISTINCT_FUNC(2),
      /**
       * <pre>
       * SUM
       * </pre>
       *
       * <code>SUM_FUNC = 3;</code>
       */
      SUM_FUNC(3),
      /**
       * <pre>
       * SUM(DISTINCT)
       * </pre>
       *
       * <code>SUM_DISTINCT_FUNC = 4;</code>
       */
      SUM_DISTINCT_FUNC(4),
      /**
       * <pre>
       * AVG
       * </pre>
       *
       * <code>AVG_FUNC = 5;</code>
       */
      AVG_FUNC(5),
      /**
       * <pre>
       * AVG(DISTINCT)
       * </pre>
       *
       * <code>AVG_DISTINCT_FUNC = 6;</code>
       */
      AVG_DISTINCT_FUNC(6),
      /**
       * <pre>
       * MIN
       * </pre>
       *
       * <code>MIN_FUNC = 7;</code>
       */
      MIN_FUNC(7),
      /**
       * <pre>
       * MAX
       * </pre>
       *
       * <code>MAX_FUNC = 8;</code>
       */
      MAX_FUNC(8),
      ;

      /**
       * <pre>
       * COUNT
       * </pre>
       *
       * <code>COUNT_FUNC = 1;</code>
       */
      public static final int COUNT_FUNC_VALUE = 1;
      /**
       * <pre>
       * COUNT(DISTINCT)
       * </pre>
       *
       * <code>COUNT_DISTINCT_FUNC = 2;</code>
       */
      public static final int COUNT_DISTINCT_FUNC_VALUE = 2;
      /**
       * <pre>
       * SUM
       * </pre>
       *
       * <code>SUM_FUNC = 3;</code>
       */
      public static final int SUM_FUNC_VALUE = 3;
      /**
       * <pre>
       * SUM(DISTINCT)
       * </pre>
       *
       * <code>SUM_DISTINCT_FUNC = 4;</code>
       */
      public static final int SUM_DISTINCT_FUNC_VALUE = 4;
      /**
       * <pre>
       * AVG
       * </pre>
       *
       * <code>AVG_FUNC = 5;</code>
       */
      public static final int AVG_FUNC_VALUE = 5;
      /**
       * <pre>
       * AVG(DISTINCT)
       * </pre>
       *
       * <code>AVG_DISTINCT_FUNC = 6;</code>
       */
      public static final int AVG_DISTINCT_FUNC_VALUE = 6;
      /**
       * <pre>
       * MIN
       * </pre>
       *
       * <code>MIN_FUNC = 7;</code>
       */
      public static final int MIN_FUNC_VALUE = 7;
      /**
       * <pre>
       * MAX
       * </pre>
       *
       * <code>MAX_FUNC = 8;</code>
       */
      public static final int MAX_FUNC_VALUE = 8;


      public final int getNumber() {
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static AggrType valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static AggrType forNumber(int value) {
        switch (value) {
          case 1: return COUNT_FUNC;
          case 2: return COUNT_DISTINCT_FUNC;
          case 3: return SUM_FUNC;
          case 4: return SUM_DISTINCT_FUNC;
          case 5: return AVG_FUNC;
          case 6: return AVG_DISTINCT_FUNC;
          case 7: return MIN_FUNC;
          case 8: return MAX_FUNC;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<AggrType>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          AggrType> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<AggrType>() {
              public AggrType findValueByNumber(int number) {
                return AggrType.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr.getDescriptor().getEnumTypes().get(0);
      }

      private static final AggrType[] VALUES = values();

      public static AggrType valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

        AggrType(int value) {
            this.value = value;
        }

      // @@protoc_insertion_point(enum_scope:Polarx.ExecPlan.Aggr.AggrType)
    }

    private int bitField0_;
    public static final int SUB_READ_PLAN_FIELD_NUMBER = 1;
    private com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan subReadPlan_;
    /**
     * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
     * @return Whether the subReadPlan field is set.
     */
    public boolean hasSubReadPlan() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
     * @return The subReadPlan.
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan getSubReadPlan() {
      return subReadPlan_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.getDefaultInstance() : subReadPlan_;
    }
    /**
     * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlanOrBuilder getSubReadPlanOrBuilder() {
      return subReadPlan_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.getDefaultInstance() : subReadPlan_;
    }

    public static final int TYPE_FIELD_NUMBER = 2;
    private int type_;
    /**
     * <pre>
     *聚集函数类型
     * </pre>
     *
     * <code>required .Polarx.ExecPlan.Aggr.AggrType type = 2;</code>
     * @return Whether the type field is set.
     */
    public boolean hasType() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     *聚集函数类型
     * </pre>
     *
     * <code>required .Polarx.ExecPlan.Aggr.AggrType type = 2;</code>
     * @return The type.
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr.AggrType getType() {
      @SuppressWarnings("deprecation")
      com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr.AggrType result = com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr.AggrType.valueOf(type_);
      return result == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr.AggrType.COUNT_FUNC : result;
    }

    public static final int FIELD_FIELD_NUMBER = 3;
    private com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar field_;
    /**
     * <pre>
     *列名
     * </pre>
     *
     * <code>required .Polarx.Datatypes.Scalar field = 3;</code>
     * @return Whether the field field is set.
     */
    public boolean hasField() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     *列名
     * </pre>
     *
     * <code>required .Polarx.Datatypes.Scalar field = 3;</code>
     * @return The field.
     */
    public com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar getField() {
      return field_ == null ? com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.getDefaultInstance() : field_;
    }
    /**
     * <pre>
     *列名
     * </pre>
     *
     * <code>required .Polarx.Datatypes.Scalar field = 3;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder getFieldOrBuilder() {
      return field_ == null ? com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.getDefaultInstance() : field_;
    }

    public static final int EXPR_FIELD_NUMBER = 4;
    private com.mysql.cj.x.protobuf.PolarxExpr.Expr expr_;
    /**
     * <pre>
     *聚集函数对应的表达式 
     * </pre>
     *
     * <code>required .Polarx.Expr.Expr expr = 4;</code>
     * @return Whether the expr field is set.
     */
    public boolean hasExpr() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     *聚集函数对应的表达式 
     * </pre>
     *
     * <code>required .Polarx.Expr.Expr expr = 4;</code>
     * @return The expr.
     */
    public com.mysql.cj.x.protobuf.PolarxExpr.Expr getExpr() {
      return expr_ == null ? com.mysql.cj.x.protobuf.PolarxExpr.Expr.getDefaultInstance() : expr_;
    }
    /**
     * <pre>
     *聚集函数对应的表达式 
     * </pre>
     *
     * <code>required .Polarx.Expr.Expr expr = 4;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxExpr.ExprOrBuilder getExprOrBuilder() {
      return expr_ == null ? com.mysql.cj.x.protobuf.PolarxExpr.Expr.getDefaultInstance() : expr_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasSubReadPlan()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasField()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasExpr()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getSubReadPlan().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getField().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getExpr().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getSubReadPlan());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeEnum(2, type_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getField());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(4, getExpr());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getSubReadPlan());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(2, type_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getField());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getExpr());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr)) {
        return super.equals(obj);
      }
      com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr other = (com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr) obj;

      if (hasSubReadPlan() != other.hasSubReadPlan()) return false;
      if (hasSubReadPlan()) {
        if (!getSubReadPlan()
            .equals(other.getSubReadPlan())) return false;
      }
      if (hasType() != other.hasType()) return false;
      if (hasType()) {
        if (type_ != other.type_) return false;
      }
      if (hasField() != other.hasField()) return false;
      if (hasField()) {
        if (!getField()
            .equals(other.getField())) return false;
      }
      if (hasExpr() != other.hasExpr()) return false;
      if (hasExpr()) {
        if (!getExpr()
            .equals(other.getExpr())) return false;
      }
        return unknownFields.equals(other.unknownFields);
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasSubReadPlan()) {
        hash = (37 * hash) + SUB_READ_PLAN_FIELD_NUMBER;
        hash = (53 * hash) + getSubReadPlan().hashCode();
      }
      if (hasType()) {
        hash = (37 * hash) + TYPE_FIELD_NUMBER;
        hash = (53 * hash) + type_;
      }
      if (hasField()) {
        hash = (37 * hash) + FIELD_FIELD_NUMBER;
        hash = (53 * hash) + getField().hashCode();
      }
      if (hasExpr()) {
        hash = (37 * hash) + EXPR_FIELD_NUMBER;
        hash = (53 * hash) + getExpr().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Polarx.ExecPlan.Aggr}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Polarx.ExecPlan.Aggr)
        com.mysql.cj.x.protobuf.PolarxExecPlan.AggrOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_Aggr_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_Aggr_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr.class, com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr.Builder.class);
      }

      // Construct using com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getSubReadPlanFieldBuilder();
          getFieldFieldBuilder();
          getExprFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (subReadPlanBuilder_ == null) {
          subReadPlan_ = null;
        } else {
          subReadPlanBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        type_ = 1;
        bitField0_ = (bitField0_ & ~0x00000002);
        if (fieldBuilder_ == null) {
          field_ = null;
        } else {
          fieldBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        if (exprBuilder_ == null) {
          expr_ = null;
        } else {
          exprBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_Aggr_descriptor;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr getDefaultInstanceForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr.getDefaultInstance();
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr build() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr buildPartial() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr result = new com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          if (subReadPlanBuilder_ == null) {
            result.subReadPlan_ = subReadPlan_;
          } else {
            result.subReadPlan_ = subReadPlanBuilder_.build();
          }
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          to_bitField0_ |= 0x00000002;
        }
        result.type_ = type_;
        if (((from_bitField0_ & 0x00000004) != 0)) {
          if (fieldBuilder_ == null) {
            result.field_ = field_;
          } else {
            result.field_ = fieldBuilder_.build();
          }
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          if (exprBuilder_ == null) {
            result.expr_ = expr_;
          } else {
            result.expr_ = exprBuilder_.build();
          }
          to_bitField0_ |= 0x00000008;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr) {
          return mergeFrom((com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr other) {
        if (other == com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr.getDefaultInstance()) return this;
        if (other.hasSubReadPlan()) {
          mergeSubReadPlan(other.getSubReadPlan());
        }
        if (other.hasType()) {
          setType(other.getType());
        }
        if (other.hasField()) {
          mergeField(other.getField());
        }
        if (other.hasExpr()) {
          mergeExpr(other.getExpr());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasSubReadPlan()) {
          return false;
        }
        if (!hasType()) {
          return false;
        }
        if (!hasField()) {
          return false;
        }
        if (!hasExpr()) {
          return false;
        }
        if (!getSubReadPlan().isInitialized()) {
          return false;
        }
        if (!getField().isInitialized()) {
          return false;
        }
          return getExpr().isInitialized();
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan subReadPlan_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan, com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlanOrBuilder> subReadPlanBuilder_;
      /**
       * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
       * @return Whether the subReadPlan field is set.
       */
      public boolean hasSubReadPlan() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
       * @return The subReadPlan.
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan getSubReadPlan() {
        if (subReadPlanBuilder_ == null) {
          return subReadPlan_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.getDefaultInstance() : subReadPlan_;
        } else {
          return subReadPlanBuilder_.getMessage();
        }
      }
      /**
       * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
       */
      public Builder setSubReadPlan(com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan value) {
        if (subReadPlanBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          subReadPlan_ = value;
          onChanged();
        } else {
          subReadPlanBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
       */
      public Builder setSubReadPlan(
          com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.Builder builderForValue) {
        if (subReadPlanBuilder_ == null) {
          subReadPlan_ = builderForValue.build();
          onChanged();
        } else {
          subReadPlanBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
       */
      public Builder mergeSubReadPlan(com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan value) {
        if (subReadPlanBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
              subReadPlan_ != null &&
              subReadPlan_ != com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.getDefaultInstance()) {
            subReadPlan_ =
              com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.newBuilder(subReadPlan_).mergeFrom(value).buildPartial();
          } else {
            subReadPlan_ = value;
          }
          onChanged();
        } else {
          subReadPlanBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
       */
      public Builder clearSubReadPlan() {
        if (subReadPlanBuilder_ == null) {
          subReadPlan_ = null;
          onChanged();
        } else {
          subReadPlanBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.Builder getSubReadPlanBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getSubReadPlanFieldBuilder().getBuilder();
      }
      /**
       * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlanOrBuilder getSubReadPlanOrBuilder() {
        if (subReadPlanBuilder_ != null) {
          return subReadPlanBuilder_.getMessageOrBuilder();
        } else {
          return subReadPlan_ == null ?
              com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.getDefaultInstance() : subReadPlan_;
        }
      }
      /**
       * <code>required .Polarx.ExecPlan.AnyPlan sub_read_plan = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan, com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlanOrBuilder> 
          getSubReadPlanFieldBuilder() {
        if (subReadPlanBuilder_ == null) {
          subReadPlanBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan, com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlanOrBuilder>(
                  getSubReadPlan(),
                  getParentForChildren(),
                  isClean());
          subReadPlan_ = null;
        }
        return subReadPlanBuilder_;
      }

      private int type_ = 1;
      /**
       * <pre>
       *聚集函数类型
       * </pre>
       *
       * <code>required .Polarx.ExecPlan.Aggr.AggrType type = 2;</code>
       * @return Whether the type field is set.
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       *聚集函数类型
       * </pre>
       *
       * <code>required .Polarx.ExecPlan.Aggr.AggrType type = 2;</code>
       * @return The type.
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr.AggrType getType() {
        @SuppressWarnings("deprecation")
        com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr.AggrType result = com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr.AggrType.valueOf(type_);
        return result == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr.AggrType.COUNT_FUNC : result;
      }
      /**
       * <pre>
       *聚集函数类型
       * </pre>
       *
       * <code>required .Polarx.ExecPlan.Aggr.AggrType type = 2;</code>
       * @param value The type to set.
       * @return This builder for chaining.
       */
      public Builder setType(com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr.AggrType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000002;
        type_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *聚集函数类型
       * </pre>
       *
       * <code>required .Polarx.ExecPlan.Aggr.AggrType type = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00000002);
        type_ = 1;
        onChanged();
        return this;
      }

      private com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar field_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder, com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder> fieldBuilder_;
      /**
       * <pre>
       *列名
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar field = 3;</code>
       * @return Whether the field field is set.
       */
      public boolean hasField() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       *列名
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar field = 3;</code>
       * @return The field.
       */
      public com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar getField() {
        if (fieldBuilder_ == null) {
          return field_ == null ? com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.getDefaultInstance() : field_;
        } else {
          return fieldBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       *列名
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar field = 3;</code>
       */
      public Builder setField(com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar value) {
        if (fieldBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          field_ = value;
          onChanged();
        } else {
          fieldBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <pre>
       *列名
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar field = 3;</code>
       */
      public Builder setField(
          com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder builderForValue) {
        if (fieldBuilder_ == null) {
          field_ = builderForValue.build();
          onChanged();
        } else {
          fieldBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <pre>
       *列名
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar field = 3;</code>
       */
      public Builder mergeField(com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar value) {
        if (fieldBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
              field_ != null &&
              field_ != com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.getDefaultInstance()) {
            field_ =
              com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.newBuilder(field_).mergeFrom(value).buildPartial();
          } else {
            field_ = value;
          }
          onChanged();
        } else {
          fieldBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <pre>
       *列名
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar field = 3;</code>
       */
      public Builder clearField() {
        if (fieldBuilder_ == null) {
          field_ = null;
          onChanged();
        } else {
          fieldBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      /**
       * <pre>
       *列名
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar field = 3;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder getFieldBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getFieldFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       *列名
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar field = 3;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder getFieldOrBuilder() {
        if (fieldBuilder_ != null) {
          return fieldBuilder_.getMessageOrBuilder();
        } else {
          return field_ == null ?
              com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.getDefaultInstance() : field_;
        }
      }
      /**
       * <pre>
       *列名
       * </pre>
       *
       * <code>required .Polarx.Datatypes.Scalar field = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder, com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder> 
          getFieldFieldBuilder() {
        if (fieldBuilder_ == null) {
          fieldBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder, com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder>(
                  getField(),
                  getParentForChildren(),
                  isClean());
          field_ = null;
        }
        return fieldBuilder_;
      }

      private com.mysql.cj.x.protobuf.PolarxExpr.Expr expr_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExpr.Expr, com.mysql.cj.x.protobuf.PolarxExpr.Expr.Builder, com.mysql.cj.x.protobuf.PolarxExpr.ExprOrBuilder> exprBuilder_;
      /**
       * <pre>
       *聚集函数对应的表达式 
       * </pre>
       *
       * <code>required .Polarx.Expr.Expr expr = 4;</code>
       * @return Whether the expr field is set.
       */
      public boolean hasExpr() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       *聚集函数对应的表达式 
       * </pre>
       *
       * <code>required .Polarx.Expr.Expr expr = 4;</code>
       * @return The expr.
       */
      public com.mysql.cj.x.protobuf.PolarxExpr.Expr getExpr() {
        if (exprBuilder_ == null) {
          return expr_ == null ? com.mysql.cj.x.protobuf.PolarxExpr.Expr.getDefaultInstance() : expr_;
        } else {
          return exprBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       *聚集函数对应的表达式 
       * </pre>
       *
       * <code>required .Polarx.Expr.Expr expr = 4;</code>
       */
      public Builder setExpr(com.mysql.cj.x.protobuf.PolarxExpr.Expr value) {
        if (exprBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          expr_ = value;
          onChanged();
        } else {
          exprBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <pre>
       *聚集函数对应的表达式 
       * </pre>
       *
       * <code>required .Polarx.Expr.Expr expr = 4;</code>
       */
      public Builder setExpr(
          com.mysql.cj.x.protobuf.PolarxExpr.Expr.Builder builderForValue) {
        if (exprBuilder_ == null) {
          expr_ = builderForValue.build();
          onChanged();
        } else {
          exprBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <pre>
       *聚集函数对应的表达式 
       * </pre>
       *
       * <code>required .Polarx.Expr.Expr expr = 4;</code>
       */
      public Builder mergeExpr(com.mysql.cj.x.protobuf.PolarxExpr.Expr value) {
        if (exprBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0) &&
              expr_ != null &&
              expr_ != com.mysql.cj.x.protobuf.PolarxExpr.Expr.getDefaultInstance()) {
            expr_ =
              com.mysql.cj.x.protobuf.PolarxExpr.Expr.newBuilder(expr_).mergeFrom(value).buildPartial();
          } else {
            expr_ = value;
          }
          onChanged();
        } else {
          exprBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <pre>
       *聚集函数对应的表达式 
       * </pre>
       *
       * <code>required .Polarx.Expr.Expr expr = 4;</code>
       */
      public Builder clearExpr() {
        if (exprBuilder_ == null) {
          expr_ = null;
          onChanged();
        } else {
          exprBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }
      /**
       * <pre>
       *聚集函数对应的表达式 
       * </pre>
       *
       * <code>required .Polarx.Expr.Expr expr = 4;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExpr.Expr.Builder getExprBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getExprFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       *聚集函数对应的表达式 
       * </pre>
       *
       * <code>required .Polarx.Expr.Expr expr = 4;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExpr.ExprOrBuilder getExprOrBuilder() {
        if (exprBuilder_ != null) {
          return exprBuilder_.getMessageOrBuilder();
        } else {
          return expr_ == null ?
              com.mysql.cj.x.protobuf.PolarxExpr.Expr.getDefaultInstance() : expr_;
        }
      }
      /**
       * <pre>
       *聚集函数对应的表达式 
       * </pre>
       *
       * <code>required .Polarx.Expr.Expr expr = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExpr.Expr, com.mysql.cj.x.protobuf.PolarxExpr.Expr.Builder, com.mysql.cj.x.protobuf.PolarxExpr.ExprOrBuilder> 
          getExprFieldBuilder() {
        if (exprBuilder_ == null) {
          exprBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxExpr.Expr, com.mysql.cj.x.protobuf.PolarxExpr.Expr.Builder, com.mysql.cj.x.protobuf.PolarxExpr.ExprOrBuilder>(
                  getExpr(),
                  getParentForChildren(),
                  isClean());
          expr_ = null;
        }
        return exprBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Polarx.ExecPlan.Aggr)
    }

    // @@protoc_insertion_point(class_scope:Polarx.ExecPlan.Aggr)
    private static final com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr();
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<Aggr>
        PARSER = new com.google.protobuf.AbstractParser<Aggr>() {
      @java.lang.Override
      public Aggr parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new Aggr(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<Aggr> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<Aggr> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface AnyPlanOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Polarx.ExecPlan.AnyPlan)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required .Polarx.ExecPlan.AnyPlan.PlanType plan_type = 1;</code>
     * @return Whether the planType field is set.
     */
    boolean hasPlanType();
    /**
     * <code>required .Polarx.ExecPlan.AnyPlan.PlanType plan_type = 1;</code>
     * @return The planType.
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.PlanType getPlanType();

    /**
     * <code>optional .Polarx.ExecPlan.GetPlan get_plan = 2;</code>
     * @return Whether the getPlan field is set.
     */
    boolean hasGetPlan();
    /**
     * <code>optional .Polarx.ExecPlan.GetPlan get_plan = 2;</code>
     * @return The getPlan.
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan getGetPlan();
    /**
     * <code>optional .Polarx.ExecPlan.GetPlan get_plan = 2;</code>
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlanOrBuilder getGetPlanOrBuilder();

    /**
     * <code>optional .Polarx.ExecPlan.TableScanPlan table_scan_plan = 3;</code>
     * @return Whether the tableScanPlan field is set.
     */
    boolean hasTableScanPlan();
    /**
     * <code>optional .Polarx.ExecPlan.TableScanPlan table_scan_plan = 3;</code>
     * @return The tableScanPlan.
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan getTableScanPlan();
    /**
     * <code>optional .Polarx.ExecPlan.TableScanPlan table_scan_plan = 3;</code>
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlanOrBuilder getTableScanPlanOrBuilder();

    /**
     * <code>optional .Polarx.ExecPlan.TableProject table_project = 4;</code>
     * @return Whether the tableProject field is set.
     */
    boolean hasTableProject();
    /**
     * <code>optional .Polarx.ExecPlan.TableProject table_project = 4;</code>
     * @return The tableProject.
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject getTableProject();
    /**
     * <code>optional .Polarx.ExecPlan.TableProject table_project = 4;</code>
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.TableProjectOrBuilder getTableProjectOrBuilder();

    /**
     * <code>optional .Polarx.ExecPlan.Project project = 5;</code>
     * @return Whether the project field is set.
     */
    boolean hasProject();
    /**
     * <code>optional .Polarx.ExecPlan.Project project = 5;</code>
     * @return The project.
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.Project getProject();
    /**
     * <code>optional .Polarx.ExecPlan.Project project = 5;</code>
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.ProjectOrBuilder getProjectOrBuilder();

    /**
     * <code>optional .Polarx.ExecPlan.Filter filter = 6;</code>
     * @return Whether the filter field is set.
     */
    boolean hasFilter();
    /**
     * <code>optional .Polarx.ExecPlan.Filter filter = 6;</code>
     * @return The filter.
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.Filter getFilter();
    /**
     * <code>optional .Polarx.ExecPlan.Filter filter = 6;</code>
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.FilterOrBuilder getFilterOrBuilder();

    /**
     * <code>optional .Polarx.ExecPlan.RangeScan range_scan = 8;</code>
     * @return Whether the rangeScan field is set.
     */
    boolean hasRangeScan();
    /**
     * <code>optional .Polarx.ExecPlan.RangeScan range_scan = 8;</code>
     * @return The rangeScan.
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan getRangeScan();
    /**
     * <code>optional .Polarx.ExecPlan.RangeScan range_scan = 8;</code>
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScanOrBuilder getRangeScanOrBuilder();

    /**
     * <code>optional .Polarx.ExecPlan.Aggr aggr = 9;</code>
     * @return Whether the aggr field is set.
     */
    boolean hasAggr();
    /**
     * <code>optional .Polarx.ExecPlan.Aggr aggr = 9;</code>
     * @return The aggr.
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr getAggr();
    /**
     * <code>optional .Polarx.ExecPlan.Aggr aggr = 9;</code>
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.AggrOrBuilder getAggrOrBuilder();
  }
  /**
   * Protobuf type {@code Polarx.ExecPlan.AnyPlan}
   */
  public  static final class AnyPlan extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Polarx.ExecPlan.AnyPlan)
      AnyPlanOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use AnyPlan.newBuilder() to construct.
    private AnyPlan(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private AnyPlan() {
      planType_ = 1;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new AnyPlan();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private AnyPlan(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {
              int rawValue = input.readEnum();
                @SuppressWarnings("deprecation")
              com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.PlanType value = com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.PlanType.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(1, rawValue);
              } else {
                bitField0_ |= 0x00000001;
                planType_ = rawValue;
              }
              break;
            }
            case 18: {
              com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) != 0)) {
                subBuilder = getPlan_.toBuilder();
              }
              getPlan_ = input.readMessage(com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(getPlan_);
                getPlan_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 26: {
              com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) != 0)) {
                subBuilder = tableScanPlan_.toBuilder();
              }
              tableScanPlan_ = input.readMessage(com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(tableScanPlan_);
                tableScanPlan_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 34: {
              com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject.Builder subBuilder = null;
              if (((bitField0_ & 0x00000008) != 0)) {
                subBuilder = tableProject_.toBuilder();
              }
              tableProject_ = input.readMessage(com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(tableProject_);
                tableProject_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000008;
              break;
            }
            case 42: {
              com.mysql.cj.x.protobuf.PolarxExecPlan.Project.Builder subBuilder = null;
              if (((bitField0_ & 0x00000010) != 0)) {
                subBuilder = project_.toBuilder();
              }
              project_ = input.readMessage(com.mysql.cj.x.protobuf.PolarxExecPlan.Project.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(project_);
                project_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000010;
              break;
            }
            case 50: {
              com.mysql.cj.x.protobuf.PolarxExecPlan.Filter.Builder subBuilder = null;
              if (((bitField0_ & 0x00000020) != 0)) {
                subBuilder = filter_.toBuilder();
              }
              filter_ = input.readMessage(com.mysql.cj.x.protobuf.PolarxExecPlan.Filter.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(filter_);
                filter_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000020;
              break;
            }
            case 66: {
              com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan.Builder subBuilder = null;
              if (((bitField0_ & 0x00000040) != 0)) {
                subBuilder = rangeScan_.toBuilder();
              }
              rangeScan_ = input.readMessage(com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(rangeScan_);
                rangeScan_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000040;
              break;
            }
            case 74: {
              com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr.Builder subBuilder = null;
              if (((bitField0_ & 0x00000080) != 0)) {
                subBuilder = aggr_.toBuilder();
              }
              aggr_ = input.readMessage(com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(aggr_);
                aggr_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000080;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_AnyPlan_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_AnyPlan_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.class, com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.Builder.class);
    }

    /**
     * Protobuf enum {@code Polarx.ExecPlan.AnyPlan.PlanType}
     */
    public enum PlanType
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>GET = 1;</code>
       */
      GET(1),
      /**
       * <code>TABLE_SCAN = 2;</code>
       */
      TABLE_SCAN(2),
      /**
       * <code>TABLE_PROJECT = 3;</code>
       */
      TABLE_PROJECT(3),
      /**
       * <code>PROJECT = 4;</code>
       */
      PROJECT(4),
      /**
       * <code>FILTER = 5;</code>
       */
      FILTER(5),
      /**
       * <code>RANGE_SCAN = 8;</code>
       */
      RANGE_SCAN(8),
      /**
       * <pre>
       *LIMIT = 7;
       * </pre>
       *
       * <code>AGGR = 9;</code>
       */
      AGGR(9),
      ;

      /**
       * <code>GET = 1;</code>
       */
      public static final int GET_VALUE = 1;
      /**
       * <code>TABLE_SCAN = 2;</code>
       */
      public static final int TABLE_SCAN_VALUE = 2;
      /**
       * <code>TABLE_PROJECT = 3;</code>
       */
      public static final int TABLE_PROJECT_VALUE = 3;
      /**
       * <code>PROJECT = 4;</code>
       */
      public static final int PROJECT_VALUE = 4;
      /**
       * <code>FILTER = 5;</code>
       */
      public static final int FILTER_VALUE = 5;
      /**
       * <code>RANGE_SCAN = 8;</code>
       */
      public static final int RANGE_SCAN_VALUE = 8;
      /**
       * <pre>
       *LIMIT = 7;
       * </pre>
       *
       * <code>AGGR = 9;</code>
       */
      public static final int AGGR_VALUE = 9;


      public final int getNumber() {
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static PlanType valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static PlanType forNumber(int value) {
        switch (value) {
          case 1: return GET;
          case 2: return TABLE_SCAN;
          case 3: return TABLE_PROJECT;
          case 4: return PROJECT;
          case 5: return FILTER;
          case 8: return RANGE_SCAN;
          case 9: return AGGR;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<PlanType>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          PlanType> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<PlanType>() {
              public PlanType findValueByNumber(int number) {
                return PlanType.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.getDescriptor().getEnumTypes().get(0);
      }

      private static final PlanType[] VALUES = values();

      public static PlanType valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

        PlanType(int value) {
            this.value = value;
        }

      // @@protoc_insertion_point(enum_scope:Polarx.ExecPlan.AnyPlan.PlanType)
    }

    private int bitField0_;
    public static final int PLAN_TYPE_FIELD_NUMBER = 1;
    private int planType_;
    /**
     * <code>required .Polarx.ExecPlan.AnyPlan.PlanType plan_type = 1;</code>
     * @return Whether the planType field is set.
     */
    public boolean hasPlanType() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required .Polarx.ExecPlan.AnyPlan.PlanType plan_type = 1;</code>
     * @return The planType.
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.PlanType getPlanType() {
      @SuppressWarnings("deprecation")
      com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.PlanType result = com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.PlanType.valueOf(planType_);
      return result == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.PlanType.GET : result;
    }

    public static final int GET_PLAN_FIELD_NUMBER = 2;
    private com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan getPlan_;
    /**
     * <code>optional .Polarx.ExecPlan.GetPlan get_plan = 2;</code>
     * @return Whether the getPlan field is set.
     */
    public boolean hasGetPlan() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>optional .Polarx.ExecPlan.GetPlan get_plan = 2;</code>
     * @return The getPlan.
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan getGetPlan() {
      return getPlan_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan.getDefaultInstance() : getPlan_;
    }
    /**
     * <code>optional .Polarx.ExecPlan.GetPlan get_plan = 2;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlanOrBuilder getGetPlanOrBuilder() {
      return getPlan_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan.getDefaultInstance() : getPlan_;
    }

    public static final int TABLE_SCAN_PLAN_FIELD_NUMBER = 3;
    private com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan tableScanPlan_;
    /**
     * <code>optional .Polarx.ExecPlan.TableScanPlan table_scan_plan = 3;</code>
     * @return Whether the tableScanPlan field is set.
     */
    public boolean hasTableScanPlan() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>optional .Polarx.ExecPlan.TableScanPlan table_scan_plan = 3;</code>
     * @return The tableScanPlan.
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan getTableScanPlan() {
      return tableScanPlan_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan.getDefaultInstance() : tableScanPlan_;
    }
    /**
     * <code>optional .Polarx.ExecPlan.TableScanPlan table_scan_plan = 3;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlanOrBuilder getTableScanPlanOrBuilder() {
      return tableScanPlan_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan.getDefaultInstance() : tableScanPlan_;
    }

    public static final int TABLE_PROJECT_FIELD_NUMBER = 4;
    private com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject tableProject_;
    /**
     * <code>optional .Polarx.ExecPlan.TableProject table_project = 4;</code>
     * @return Whether the tableProject field is set.
     */
    public boolean hasTableProject() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>optional .Polarx.ExecPlan.TableProject table_project = 4;</code>
     * @return The tableProject.
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject getTableProject() {
      return tableProject_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject.getDefaultInstance() : tableProject_;
    }
    /**
     * <code>optional .Polarx.ExecPlan.TableProject table_project = 4;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.TableProjectOrBuilder getTableProjectOrBuilder() {
      return tableProject_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject.getDefaultInstance() : tableProject_;
    }

    public static final int PROJECT_FIELD_NUMBER = 5;
    private com.mysql.cj.x.protobuf.PolarxExecPlan.Project project_;
    /**
     * <code>optional .Polarx.ExecPlan.Project project = 5;</code>
     * @return Whether the project field is set.
     */
    public boolean hasProject() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <code>optional .Polarx.ExecPlan.Project project = 5;</code>
     * @return The project.
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.Project getProject() {
      return project_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.Project.getDefaultInstance() : project_;
    }
    /**
     * <code>optional .Polarx.ExecPlan.Project project = 5;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.ProjectOrBuilder getProjectOrBuilder() {
      return project_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.Project.getDefaultInstance() : project_;
    }

    public static final int FILTER_FIELD_NUMBER = 6;
    private com.mysql.cj.x.protobuf.PolarxExecPlan.Filter filter_;
    /**
     * <code>optional .Polarx.ExecPlan.Filter filter = 6;</code>
     * @return Whether the filter field is set.
     */
    public boolean hasFilter() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <code>optional .Polarx.ExecPlan.Filter filter = 6;</code>
     * @return The filter.
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.Filter getFilter() {
      return filter_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.Filter.getDefaultInstance() : filter_;
    }
    /**
     * <code>optional .Polarx.ExecPlan.Filter filter = 6;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.FilterOrBuilder getFilterOrBuilder() {
      return filter_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.Filter.getDefaultInstance() : filter_;
    }

    public static final int RANGE_SCAN_FIELD_NUMBER = 8;
    private com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan rangeScan_;
    /**
     * <code>optional .Polarx.ExecPlan.RangeScan range_scan = 8;</code>
     * @return Whether the rangeScan field is set.
     */
    public boolean hasRangeScan() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <code>optional .Polarx.ExecPlan.RangeScan range_scan = 8;</code>
     * @return The rangeScan.
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan getRangeScan() {
      return rangeScan_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan.getDefaultInstance() : rangeScan_;
    }
    /**
     * <code>optional .Polarx.ExecPlan.RangeScan range_scan = 8;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScanOrBuilder getRangeScanOrBuilder() {
      return rangeScan_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan.getDefaultInstance() : rangeScan_;
    }

    public static final int AGGR_FIELD_NUMBER = 9;
    private com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr aggr_;
    /**
     * <code>optional .Polarx.ExecPlan.Aggr aggr = 9;</code>
     * @return Whether the aggr field is set.
     */
    public boolean hasAggr() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <code>optional .Polarx.ExecPlan.Aggr aggr = 9;</code>
     * @return The aggr.
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr getAggr() {
      return aggr_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr.getDefaultInstance() : aggr_;
    }
    /**
     * <code>optional .Polarx.ExecPlan.Aggr aggr = 9;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.AggrOrBuilder getAggrOrBuilder() {
      return aggr_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr.getDefaultInstance() : aggr_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasPlanType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasGetPlan()) {
        if (!getGetPlan().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasTableScanPlan()) {
        if (!getTableScanPlan().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasTableProject()) {
        if (!getTableProject().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasProject()) {
        if (!getProject().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasFilter()) {
        if (!getFilter().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasRangeScan()) {
        if (!getRangeScan().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasAggr()) {
        if (!getAggr().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeEnum(1, planType_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getGetPlan());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getTableScanPlan());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(4, getTableProject());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeMessage(5, getProject());
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeMessage(6, getFilter());
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeMessage(8, getRangeScan());
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        output.writeMessage(9, getAggr());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, planType_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getGetPlan());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getTableScanPlan());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getTableProject());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getProject());
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, getFilter());
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, getRangeScan());
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, getAggr());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan)) {
        return super.equals(obj);
      }
      com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan other = (com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan) obj;

      if (hasPlanType() != other.hasPlanType()) return false;
      if (hasPlanType()) {
        if (planType_ != other.planType_) return false;
      }
      if (hasGetPlan() != other.hasGetPlan()) return false;
      if (hasGetPlan()) {
        if (!getGetPlan()
            .equals(other.getGetPlan())) return false;
      }
      if (hasTableScanPlan() != other.hasTableScanPlan()) return false;
      if (hasTableScanPlan()) {
        if (!getTableScanPlan()
            .equals(other.getTableScanPlan())) return false;
      }
      if (hasTableProject() != other.hasTableProject()) return false;
      if (hasTableProject()) {
        if (!getTableProject()
            .equals(other.getTableProject())) return false;
      }
      if (hasProject() != other.hasProject()) return false;
      if (hasProject()) {
        if (!getProject()
            .equals(other.getProject())) return false;
      }
      if (hasFilter() != other.hasFilter()) return false;
      if (hasFilter()) {
        if (!getFilter()
            .equals(other.getFilter())) return false;
      }
      if (hasRangeScan() != other.hasRangeScan()) return false;
      if (hasRangeScan()) {
        if (!getRangeScan()
            .equals(other.getRangeScan())) return false;
      }
      if (hasAggr() != other.hasAggr()) return false;
      if (hasAggr()) {
        if (!getAggr()
            .equals(other.getAggr())) return false;
      }
        return unknownFields.equals(other.unknownFields);
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasPlanType()) {
        hash = (37 * hash) + PLAN_TYPE_FIELD_NUMBER;
        hash = (53 * hash) + planType_;
      }
      if (hasGetPlan()) {
        hash = (37 * hash) + GET_PLAN_FIELD_NUMBER;
        hash = (53 * hash) + getGetPlan().hashCode();
      }
      if (hasTableScanPlan()) {
        hash = (37 * hash) + TABLE_SCAN_PLAN_FIELD_NUMBER;
        hash = (53 * hash) + getTableScanPlan().hashCode();
      }
      if (hasTableProject()) {
        hash = (37 * hash) + TABLE_PROJECT_FIELD_NUMBER;
        hash = (53 * hash) + getTableProject().hashCode();
      }
      if (hasProject()) {
        hash = (37 * hash) + PROJECT_FIELD_NUMBER;
        hash = (53 * hash) + getProject().hashCode();
      }
      if (hasFilter()) {
        hash = (37 * hash) + FILTER_FIELD_NUMBER;
        hash = (53 * hash) + getFilter().hashCode();
      }
      if (hasRangeScan()) {
        hash = (37 * hash) + RANGE_SCAN_FIELD_NUMBER;
        hash = (53 * hash) + getRangeScan().hashCode();
      }
      if (hasAggr()) {
        hash = (37 * hash) + AGGR_FIELD_NUMBER;
        hash = (53 * hash) + getAggr().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code Polarx.ExecPlan.AnyPlan}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Polarx.ExecPlan.AnyPlan)
        com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlanOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_AnyPlan_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_AnyPlan_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.class, com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.Builder.class);
      }

      // Construct using com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getGetPlanFieldBuilder();
          getTableScanPlanFieldBuilder();
          getTableProjectFieldBuilder();
          getProjectFieldBuilder();
          getFilterFieldBuilder();
          getRangeScanFieldBuilder();
          getAggrFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        planType_ = 1;
        bitField0_ = (bitField0_ & ~0x00000001);
        if (getPlanBuilder_ == null) {
          getPlan_ = null;
        } else {
          getPlanBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        if (tableScanPlanBuilder_ == null) {
          tableScanPlan_ = null;
        } else {
          tableScanPlanBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        if (tableProjectBuilder_ == null) {
          tableProject_ = null;
        } else {
          tableProjectBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        if (projectBuilder_ == null) {
          project_ = null;
        } else {
          projectBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        if (filterBuilder_ == null) {
          filter_ = null;
        } else {
          filterBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000020);
        if (rangeScanBuilder_ == null) {
          rangeScan_ = null;
        } else {
          rangeScanBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000040);
        if (aggrBuilder_ == null) {
          aggr_ = null;
        } else {
          aggrBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000080);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_AnyPlan_descriptor;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan getDefaultInstanceForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.getDefaultInstance();
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan build() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan buildPartial() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan result = new com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          to_bitField0_ |= 0x00000001;
        }
        result.planType_ = planType_;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          if (getPlanBuilder_ == null) {
            result.getPlan_ = getPlan_;
          } else {
            result.getPlan_ = getPlanBuilder_.build();
          }
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          if (tableScanPlanBuilder_ == null) {
            result.tableScanPlan_ = tableScanPlan_;
          } else {
            result.tableScanPlan_ = tableScanPlanBuilder_.build();
          }
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          if (tableProjectBuilder_ == null) {
            result.tableProject_ = tableProject_;
          } else {
            result.tableProject_ = tableProjectBuilder_.build();
          }
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          if (projectBuilder_ == null) {
            result.project_ = project_;
          } else {
            result.project_ = projectBuilder_.build();
          }
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          if (filterBuilder_ == null) {
            result.filter_ = filter_;
          } else {
            result.filter_ = filterBuilder_.build();
          }
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          if (rangeScanBuilder_ == null) {
            result.rangeScan_ = rangeScan_;
          } else {
            result.rangeScan_ = rangeScanBuilder_.build();
          }
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          if (aggrBuilder_ == null) {
            result.aggr_ = aggr_;
          } else {
            result.aggr_ = aggrBuilder_.build();
          }
          to_bitField0_ |= 0x00000080;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan) {
          return mergeFrom((com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan other) {
        if (other == com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.getDefaultInstance()) return this;
        if (other.hasPlanType()) {
          setPlanType(other.getPlanType());
        }
        if (other.hasGetPlan()) {
          mergeGetPlan(other.getGetPlan());
        }
        if (other.hasTableScanPlan()) {
          mergeTableScanPlan(other.getTableScanPlan());
        }
        if (other.hasTableProject()) {
          mergeTableProject(other.getTableProject());
        }
        if (other.hasProject()) {
          mergeProject(other.getProject());
        }
        if (other.hasFilter()) {
          mergeFilter(other.getFilter());
        }
        if (other.hasRangeScan()) {
          mergeRangeScan(other.getRangeScan());
        }
        if (other.hasAggr()) {
          mergeAggr(other.getAggr());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasPlanType()) {
          return false;
        }
        if (hasGetPlan()) {
          if (!getGetPlan().isInitialized()) {
            return false;
          }
        }
        if (hasTableScanPlan()) {
          if (!getTableScanPlan().isInitialized()) {
            return false;
          }
        }
        if (hasTableProject()) {
          if (!getTableProject().isInitialized()) {
            return false;
          }
        }
        if (hasProject()) {
          if (!getProject().isInitialized()) {
            return false;
          }
        }
        if (hasFilter()) {
          if (!getFilter().isInitialized()) {
            return false;
          }
        }
        if (hasRangeScan()) {
          if (!getRangeScan().isInitialized()) {
            return false;
          }
        }
        if (hasAggr()) {
            return getAggr().isInitialized();
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int planType_ = 1;
      /**
       * <code>required .Polarx.ExecPlan.AnyPlan.PlanType plan_type = 1;</code>
       * @return Whether the planType field is set.
       */
      public boolean hasPlanType() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required .Polarx.ExecPlan.AnyPlan.PlanType plan_type = 1;</code>
       * @return The planType.
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.PlanType getPlanType() {
        @SuppressWarnings("deprecation")
        com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.PlanType result = com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.PlanType.valueOf(planType_);
        return result == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.PlanType.GET : result;
      }
      /**
       * <code>required .Polarx.ExecPlan.AnyPlan.PlanType plan_type = 1;</code>
       * @param value The planType to set.
       * @return This builder for chaining.
       */
      public Builder setPlanType(com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.PlanType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        planType_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>required .Polarx.ExecPlan.AnyPlan.PlanType plan_type = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPlanType() {
        bitField0_ = (bitField0_ & ~0x00000001);
        planType_ = 1;
        onChanged();
        return this;
      }

      private com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan getPlan_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan, com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlanOrBuilder> getPlanBuilder_;
      /**
       * <code>optional .Polarx.ExecPlan.GetPlan get_plan = 2;</code>
       * @return Whether the getPlan field is set.
       */
      public boolean hasGetPlan() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional .Polarx.ExecPlan.GetPlan get_plan = 2;</code>
       * @return The getPlan.
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan getGetPlan() {
        if (getPlanBuilder_ == null) {
          return getPlan_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan.getDefaultInstance() : getPlan_;
        } else {
          return getPlanBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .Polarx.ExecPlan.GetPlan get_plan = 2;</code>
       */
      public Builder setGetPlan(com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan value) {
        if (getPlanBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          getPlan_ = value;
          onChanged();
        } else {
          getPlanBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.GetPlan get_plan = 2;</code>
       */
      public Builder setGetPlan(
          com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan.Builder builderForValue) {
        if (getPlanBuilder_ == null) {
          getPlan_ = builderForValue.build();
          onChanged();
        } else {
          getPlanBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.GetPlan get_plan = 2;</code>
       */
      public Builder mergeGetPlan(com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan value) {
        if (getPlanBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
              getPlan_ != null &&
              getPlan_ != com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan.getDefaultInstance()) {
            getPlan_ =
              com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan.newBuilder(getPlan_).mergeFrom(value).buildPartial();
          } else {
            getPlan_ = value;
          }
          onChanged();
        } else {
          getPlanBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.GetPlan get_plan = 2;</code>
       */
      public Builder clearGetPlan() {
        if (getPlanBuilder_ == null) {
          getPlan_ = null;
          onChanged();
        } else {
          getPlanBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.GetPlan get_plan = 2;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan.Builder getGetPlanBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getGetPlanFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .Polarx.ExecPlan.GetPlan get_plan = 2;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlanOrBuilder getGetPlanOrBuilder() {
        if (getPlanBuilder_ != null) {
          return getPlanBuilder_.getMessageOrBuilder();
        } else {
          return getPlan_ == null ?
              com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan.getDefaultInstance() : getPlan_;
        }
      }
      /**
       * <code>optional .Polarx.ExecPlan.GetPlan get_plan = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan, com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlanOrBuilder> 
          getGetPlanFieldBuilder() {
        if (getPlanBuilder_ == null) {
          getPlanBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan, com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlan.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.GetPlanOrBuilder>(
                  getGetPlan(),
                  getParentForChildren(),
                  isClean());
          getPlan_ = null;
        }
        return getPlanBuilder_;
      }

      private com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan tableScanPlan_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan, com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlanOrBuilder> tableScanPlanBuilder_;
      /**
       * <code>optional .Polarx.ExecPlan.TableScanPlan table_scan_plan = 3;</code>
       * @return Whether the tableScanPlan field is set.
       */
      public boolean hasTableScanPlan() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional .Polarx.ExecPlan.TableScanPlan table_scan_plan = 3;</code>
       * @return The tableScanPlan.
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan getTableScanPlan() {
        if (tableScanPlanBuilder_ == null) {
          return tableScanPlan_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan.getDefaultInstance() : tableScanPlan_;
        } else {
          return tableScanPlanBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .Polarx.ExecPlan.TableScanPlan table_scan_plan = 3;</code>
       */
      public Builder setTableScanPlan(com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan value) {
        if (tableScanPlanBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          tableScanPlan_ = value;
          onChanged();
        } else {
          tableScanPlanBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.TableScanPlan table_scan_plan = 3;</code>
       */
      public Builder setTableScanPlan(
          com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan.Builder builderForValue) {
        if (tableScanPlanBuilder_ == null) {
          tableScanPlan_ = builderForValue.build();
          onChanged();
        } else {
          tableScanPlanBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.TableScanPlan table_scan_plan = 3;</code>
       */
      public Builder mergeTableScanPlan(com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan value) {
        if (tableScanPlanBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
              tableScanPlan_ != null &&
              tableScanPlan_ != com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan.getDefaultInstance()) {
            tableScanPlan_ =
              com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan.newBuilder(tableScanPlan_).mergeFrom(value).buildPartial();
          } else {
            tableScanPlan_ = value;
          }
          onChanged();
        } else {
          tableScanPlanBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.TableScanPlan table_scan_plan = 3;</code>
       */
      public Builder clearTableScanPlan() {
        if (tableScanPlanBuilder_ == null) {
          tableScanPlan_ = null;
          onChanged();
        } else {
          tableScanPlanBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.TableScanPlan table_scan_plan = 3;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan.Builder getTableScanPlanBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getTableScanPlanFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .Polarx.ExecPlan.TableScanPlan table_scan_plan = 3;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlanOrBuilder getTableScanPlanOrBuilder() {
        if (tableScanPlanBuilder_ != null) {
          return tableScanPlanBuilder_.getMessageOrBuilder();
        } else {
          return tableScanPlan_ == null ?
              com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan.getDefaultInstance() : tableScanPlan_;
        }
      }
      /**
       * <code>optional .Polarx.ExecPlan.TableScanPlan table_scan_plan = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan, com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlanOrBuilder> 
          getTableScanPlanFieldBuilder() {
        if (tableScanPlanBuilder_ == null) {
          tableScanPlanBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan, com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlan.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.TableScanPlanOrBuilder>(
                  getTableScanPlan(),
                  getParentForChildren(),
                  isClean());
          tableScanPlan_ = null;
        }
        return tableScanPlanBuilder_;
      }

      private com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject tableProject_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject, com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.TableProjectOrBuilder> tableProjectBuilder_;
      /**
       * <code>optional .Polarx.ExecPlan.TableProject table_project = 4;</code>
       * @return Whether the tableProject field is set.
       */
      public boolean hasTableProject() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>optional .Polarx.ExecPlan.TableProject table_project = 4;</code>
       * @return The tableProject.
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject getTableProject() {
        if (tableProjectBuilder_ == null) {
          return tableProject_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject.getDefaultInstance() : tableProject_;
        } else {
          return tableProjectBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .Polarx.ExecPlan.TableProject table_project = 4;</code>
       */
      public Builder setTableProject(com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject value) {
        if (tableProjectBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          tableProject_ = value;
          onChanged();
        } else {
          tableProjectBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.TableProject table_project = 4;</code>
       */
      public Builder setTableProject(
          com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject.Builder builderForValue) {
        if (tableProjectBuilder_ == null) {
          tableProject_ = builderForValue.build();
          onChanged();
        } else {
          tableProjectBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.TableProject table_project = 4;</code>
       */
      public Builder mergeTableProject(com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject value) {
        if (tableProjectBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0) &&
              tableProject_ != null &&
              tableProject_ != com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject.getDefaultInstance()) {
            tableProject_ =
              com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject.newBuilder(tableProject_).mergeFrom(value).buildPartial();
          } else {
            tableProject_ = value;
          }
          onChanged();
        } else {
          tableProjectBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.TableProject table_project = 4;</code>
       */
      public Builder clearTableProject() {
        if (tableProjectBuilder_ == null) {
          tableProject_ = null;
          onChanged();
        } else {
          tableProjectBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.TableProject table_project = 4;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject.Builder getTableProjectBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getTableProjectFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .Polarx.ExecPlan.TableProject table_project = 4;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.TableProjectOrBuilder getTableProjectOrBuilder() {
        if (tableProjectBuilder_ != null) {
          return tableProjectBuilder_.getMessageOrBuilder();
        } else {
          return tableProject_ == null ?
              com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject.getDefaultInstance() : tableProject_;
        }
      }
      /**
       * <code>optional .Polarx.ExecPlan.TableProject table_project = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject, com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.TableProjectOrBuilder> 
          getTableProjectFieldBuilder() {
        if (tableProjectBuilder_ == null) {
          tableProjectBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject, com.mysql.cj.x.protobuf.PolarxExecPlan.TableProject.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.TableProjectOrBuilder>(
                  getTableProject(),
                  getParentForChildren(),
                  isClean());
          tableProject_ = null;
        }
        return tableProjectBuilder_;
      }

      private com.mysql.cj.x.protobuf.PolarxExecPlan.Project project_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.Project, com.mysql.cj.x.protobuf.PolarxExecPlan.Project.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.ProjectOrBuilder> projectBuilder_;
      /**
       * <code>optional .Polarx.ExecPlan.Project project = 5;</code>
       * @return Whether the project field is set.
       */
      public boolean hasProject() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>optional .Polarx.ExecPlan.Project project = 5;</code>
       * @return The project.
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.Project getProject() {
        if (projectBuilder_ == null) {
          return project_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.Project.getDefaultInstance() : project_;
        } else {
          return projectBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .Polarx.ExecPlan.Project project = 5;</code>
       */
      public Builder setProject(com.mysql.cj.x.protobuf.PolarxExecPlan.Project value) {
        if (projectBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          project_ = value;
          onChanged();
        } else {
          projectBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.Project project = 5;</code>
       */
      public Builder setProject(
          com.mysql.cj.x.protobuf.PolarxExecPlan.Project.Builder builderForValue) {
        if (projectBuilder_ == null) {
          project_ = builderForValue.build();
          onChanged();
        } else {
          projectBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.Project project = 5;</code>
       */
      public Builder mergeProject(com.mysql.cj.x.protobuf.PolarxExecPlan.Project value) {
        if (projectBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
              project_ != null &&
              project_ != com.mysql.cj.x.protobuf.PolarxExecPlan.Project.getDefaultInstance()) {
            project_ =
              com.mysql.cj.x.protobuf.PolarxExecPlan.Project.newBuilder(project_).mergeFrom(value).buildPartial();
          } else {
            project_ = value;
          }
          onChanged();
        } else {
          projectBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.Project project = 5;</code>
       */
      public Builder clearProject() {
        if (projectBuilder_ == null) {
          project_ = null;
          onChanged();
        } else {
          projectBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.Project project = 5;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.Project.Builder getProjectBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getProjectFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .Polarx.ExecPlan.Project project = 5;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.ProjectOrBuilder getProjectOrBuilder() {
        if (projectBuilder_ != null) {
          return projectBuilder_.getMessageOrBuilder();
        } else {
          return project_ == null ?
              com.mysql.cj.x.protobuf.PolarxExecPlan.Project.getDefaultInstance() : project_;
        }
      }
      /**
       * <code>optional .Polarx.ExecPlan.Project project = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.Project, com.mysql.cj.x.protobuf.PolarxExecPlan.Project.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.ProjectOrBuilder> 
          getProjectFieldBuilder() {
        if (projectBuilder_ == null) {
          projectBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxExecPlan.Project, com.mysql.cj.x.protobuf.PolarxExecPlan.Project.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.ProjectOrBuilder>(
                  getProject(),
                  getParentForChildren(),
                  isClean());
          project_ = null;
        }
        return projectBuilder_;
      }

      private com.mysql.cj.x.protobuf.PolarxExecPlan.Filter filter_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.Filter, com.mysql.cj.x.protobuf.PolarxExecPlan.Filter.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.FilterOrBuilder> filterBuilder_;
      /**
       * <code>optional .Polarx.ExecPlan.Filter filter = 6;</code>
       * @return Whether the filter field is set.
       */
      public boolean hasFilter() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <code>optional .Polarx.ExecPlan.Filter filter = 6;</code>
       * @return The filter.
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.Filter getFilter() {
        if (filterBuilder_ == null) {
          return filter_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.Filter.getDefaultInstance() : filter_;
        } else {
          return filterBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .Polarx.ExecPlan.Filter filter = 6;</code>
       */
      public Builder setFilter(com.mysql.cj.x.protobuf.PolarxExecPlan.Filter value) {
        if (filterBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          filter_ = value;
          onChanged();
        } else {
          filterBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000020;
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.Filter filter = 6;</code>
       */
      public Builder setFilter(
          com.mysql.cj.x.protobuf.PolarxExecPlan.Filter.Builder builderForValue) {
        if (filterBuilder_ == null) {
          filter_ = builderForValue.build();
          onChanged();
        } else {
          filterBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000020;
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.Filter filter = 6;</code>
       */
      public Builder mergeFilter(com.mysql.cj.x.protobuf.PolarxExecPlan.Filter value) {
        if (filterBuilder_ == null) {
          if (((bitField0_ & 0x00000020) != 0) &&
              filter_ != null &&
              filter_ != com.mysql.cj.x.protobuf.PolarxExecPlan.Filter.getDefaultInstance()) {
            filter_ =
              com.mysql.cj.x.protobuf.PolarxExecPlan.Filter.newBuilder(filter_).mergeFrom(value).buildPartial();
          } else {
            filter_ = value;
          }
          onChanged();
        } else {
          filterBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000020;
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.Filter filter = 6;</code>
       */
      public Builder clearFilter() {
        if (filterBuilder_ == null) {
          filter_ = null;
          onChanged();
        } else {
          filterBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000020);
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.Filter filter = 6;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.Filter.Builder getFilterBuilder() {
        bitField0_ |= 0x00000020;
        onChanged();
        return getFilterFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .Polarx.ExecPlan.Filter filter = 6;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.FilterOrBuilder getFilterOrBuilder() {
        if (filterBuilder_ != null) {
          return filterBuilder_.getMessageOrBuilder();
        } else {
          return filter_ == null ?
              com.mysql.cj.x.protobuf.PolarxExecPlan.Filter.getDefaultInstance() : filter_;
        }
      }
      /**
       * <code>optional .Polarx.ExecPlan.Filter filter = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.Filter, com.mysql.cj.x.protobuf.PolarxExecPlan.Filter.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.FilterOrBuilder> 
          getFilterFieldBuilder() {
        if (filterBuilder_ == null) {
          filterBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxExecPlan.Filter, com.mysql.cj.x.protobuf.PolarxExecPlan.Filter.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.FilterOrBuilder>(
                  getFilter(),
                  getParentForChildren(),
                  isClean());
          filter_ = null;
        }
        return filterBuilder_;
      }

      private com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan rangeScan_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan, com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScanOrBuilder> rangeScanBuilder_;
      /**
       * <code>optional .Polarx.ExecPlan.RangeScan range_scan = 8;</code>
       * @return Whether the rangeScan field is set.
       */
      public boolean hasRangeScan() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <code>optional .Polarx.ExecPlan.RangeScan range_scan = 8;</code>
       * @return The rangeScan.
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan getRangeScan() {
        if (rangeScanBuilder_ == null) {
          return rangeScan_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan.getDefaultInstance() : rangeScan_;
        } else {
          return rangeScanBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .Polarx.ExecPlan.RangeScan range_scan = 8;</code>
       */
      public Builder setRangeScan(com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan value) {
        if (rangeScanBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          rangeScan_ = value;
          onChanged();
        } else {
          rangeScanBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000040;
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.RangeScan range_scan = 8;</code>
       */
      public Builder setRangeScan(
          com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan.Builder builderForValue) {
        if (rangeScanBuilder_ == null) {
          rangeScan_ = builderForValue.build();
          onChanged();
        } else {
          rangeScanBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000040;
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.RangeScan range_scan = 8;</code>
       */
      public Builder mergeRangeScan(com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan value) {
        if (rangeScanBuilder_ == null) {
          if (((bitField0_ & 0x00000040) != 0) &&
              rangeScan_ != null &&
              rangeScan_ != com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan.getDefaultInstance()) {
            rangeScan_ =
              com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan.newBuilder(rangeScan_).mergeFrom(value).buildPartial();
          } else {
            rangeScan_ = value;
          }
          onChanged();
        } else {
          rangeScanBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000040;
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.RangeScan range_scan = 8;</code>
       */
      public Builder clearRangeScan() {
        if (rangeScanBuilder_ == null) {
          rangeScan_ = null;
          onChanged();
        } else {
          rangeScanBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000040);
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.RangeScan range_scan = 8;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan.Builder getRangeScanBuilder() {
        bitField0_ |= 0x00000040;
        onChanged();
        return getRangeScanFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .Polarx.ExecPlan.RangeScan range_scan = 8;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScanOrBuilder getRangeScanOrBuilder() {
        if (rangeScanBuilder_ != null) {
          return rangeScanBuilder_.getMessageOrBuilder();
        } else {
          return rangeScan_ == null ?
              com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan.getDefaultInstance() : rangeScan_;
        }
      }
      /**
       * <code>optional .Polarx.ExecPlan.RangeScan range_scan = 8;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan, com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScanOrBuilder> 
          getRangeScanFieldBuilder() {
        if (rangeScanBuilder_ == null) {
          rangeScanBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan, com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScan.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.RangeScanOrBuilder>(
                  getRangeScan(),
                  getParentForChildren(),
                  isClean());
          rangeScan_ = null;
        }
        return rangeScanBuilder_;
      }

      private com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr aggr_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr, com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.AggrOrBuilder> aggrBuilder_;
      /**
       * <code>optional .Polarx.ExecPlan.Aggr aggr = 9;</code>
       * @return Whether the aggr field is set.
       */
      public boolean hasAggr() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <code>optional .Polarx.ExecPlan.Aggr aggr = 9;</code>
       * @return The aggr.
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr getAggr() {
        if (aggrBuilder_ == null) {
          return aggr_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr.getDefaultInstance() : aggr_;
        } else {
          return aggrBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .Polarx.ExecPlan.Aggr aggr = 9;</code>
       */
      public Builder setAggr(com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr value) {
        if (aggrBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          aggr_ = value;
          onChanged();
        } else {
          aggrBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000080;
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.Aggr aggr = 9;</code>
       */
      public Builder setAggr(
          com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr.Builder builderForValue) {
        if (aggrBuilder_ == null) {
          aggr_ = builderForValue.build();
          onChanged();
        } else {
          aggrBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000080;
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.Aggr aggr = 9;</code>
       */
      public Builder mergeAggr(com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr value) {
        if (aggrBuilder_ == null) {
          if (((bitField0_ & 0x00000080) != 0) &&
              aggr_ != null &&
              aggr_ != com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr.getDefaultInstance()) {
            aggr_ =
              com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr.newBuilder(aggr_).mergeFrom(value).buildPartial();
          } else {
            aggr_ = value;
          }
          onChanged();
        } else {
          aggrBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000080;
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.Aggr aggr = 9;</code>
       */
      public Builder clearAggr() {
        if (aggrBuilder_ == null) {
          aggr_ = null;
          onChanged();
        } else {
          aggrBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000080);
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.Aggr aggr = 9;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr.Builder getAggrBuilder() {
        bitField0_ |= 0x00000080;
        onChanged();
        return getAggrFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .Polarx.ExecPlan.Aggr aggr = 9;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.AggrOrBuilder getAggrOrBuilder() {
        if (aggrBuilder_ != null) {
          return aggrBuilder_.getMessageOrBuilder();
        } else {
          return aggr_ == null ?
              com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr.getDefaultInstance() : aggr_;
        }
      }
      /**
       * <code>optional .Polarx.ExecPlan.Aggr aggr = 9;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr, com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.AggrOrBuilder> 
          getAggrFieldBuilder() {
        if (aggrBuilder_ == null) {
          aggrBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr, com.mysql.cj.x.protobuf.PolarxExecPlan.Aggr.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.AggrOrBuilder>(
                  getAggr(),
                  getParentForChildren(),
                  isClean());
          aggr_ = null;
        }
        return aggrBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Polarx.ExecPlan.AnyPlan)
    }

    // @@protoc_insertion_point(class_scope:Polarx.ExecPlan.AnyPlan)
    private static final com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan();
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<AnyPlan>
        PARSER = new com.google.protobuf.AbstractParser<AnyPlan>() {
      @java.lang.Override
      public AnyPlan parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new AnyPlan(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<AnyPlan> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<AnyPlan> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ExecPlanOrBuilder extends
      // @@protoc_insertion_point(interface_extends:Polarx.ExecPlan.ExecPlan)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>optional .Polarx.ExecPlan.Transaction transaction = 1;</code>
     * @return Whether the transaction field is set.
     */
    boolean hasTransaction();
    /**
     * <code>optional .Polarx.ExecPlan.Transaction transaction = 1;</code>
     * @return The transaction.
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction getTransaction();
    /**
     * <code>optional .Polarx.ExecPlan.Transaction transaction = 1;</code>
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.TransactionOrBuilder getTransactionOrBuilder();

    /**
     * <code>optional .Polarx.ExecPlan.AnyPlan plan = 2;</code>
     * @return Whether the plan field is set.
     */
    boolean hasPlan();
    /**
     * <code>optional .Polarx.ExecPlan.AnyPlan plan = 2;</code>
     * @return The plan.
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan getPlan();
    /**
     * <code>optional .Polarx.ExecPlan.AnyPlan plan = 2;</code>
     */
    com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlanOrBuilder getPlanOrBuilder();

    /**
     * <code>optional bytes plan_digest = 3;</code>
     * @return Whether the planDigest field is set.
     */
    boolean hasPlanDigest();
    /**
     * <code>optional bytes plan_digest = 3;</code>
     * @return The planDigest.
     */
    com.google.protobuf.ByteString getPlanDigest();

    /**
     * <pre>
     * 动态参数记录在这，从0开始 **有修改**
     * </pre>
     *
     * <code>repeated .Polarx.Datatypes.Scalar parameters = 4;</code>
     */
    java.util.List<com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar> 
        getParametersList();
    /**
     * <pre>
     * 动态参数记录在这，从0开始 **有修改**
     * </pre>
     *
     * <code>repeated .Polarx.Datatypes.Scalar parameters = 4;</code>
     */
    com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar getParameters(int index);
    /**
     * <pre>
     * 动态参数记录在这，从0开始 **有修改**
     * </pre>
     *
     * <code>repeated .Polarx.Datatypes.Scalar parameters = 4;</code>
     */
    int getParametersCount();
    /**
     * <pre>
     * 动态参数记录在这，从0开始 **有修改**
     * </pre>
     *
     * <code>repeated .Polarx.Datatypes.Scalar parameters = 4;</code>
     */
    java.util.List<? extends com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder> 
        getParametersOrBuilderList();
    /**
     * <pre>
     * 动态参数记录在这，从0开始 **有修改**
     * </pre>
     *
     * <code>repeated .Polarx.Datatypes.Scalar parameters = 4;</code>
     */
    com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder getParametersOrBuilder(
        int index);

    /**
     * <code>repeated .Polarx.Datatypes.SessionVariable session_variables = 5;</code>
     */
    java.util.List<com.mysql.cj.x.protobuf.PolarxDatatypes.SessionVariable> 
        getSessionVariablesList();
    /**
     * <code>repeated .Polarx.Datatypes.SessionVariable session_variables = 5;</code>
     */
    com.mysql.cj.x.protobuf.PolarxDatatypes.SessionVariable getSessionVariables(int index);
    /**
     * <code>repeated .Polarx.Datatypes.SessionVariable session_variables = 5;</code>
     */
    int getSessionVariablesCount();
    /**
     * <code>repeated .Polarx.Datatypes.SessionVariable session_variables = 5;</code>
     */
    java.util.List<? extends com.mysql.cj.x.protobuf.PolarxDatatypes.SessionVariableOrBuilder> 
        getSessionVariablesOrBuilderList();
    /**
     * <code>repeated .Polarx.Datatypes.SessionVariable session_variables = 5;</code>
     */
    com.mysql.cj.x.protobuf.PolarxDatatypes.SessionVariableOrBuilder getSessionVariablesOrBuilder(
        int index);

    /**
     * <code>optional int32 token = 6;</code>
     * @return Whether the token field is set.
     */
    boolean hasToken();
    /**
     * <code>optional int32 token = 6;</code>
     * @return The token.
     */
    int getToken();

    /**
     * <code>optional bool reset_error = 7;</code>
     * @return Whether the resetError field is set.
     */
    boolean hasResetError();
    /**
     * <code>optional bool reset_error = 7;</code>
     * @return The resetError.
     */
    boolean getResetError();

    /**
     * <code>optional bool compact_metadata = 8 [default = false];</code>
     * @return Whether the compactMetadata field is set.
     */
    boolean hasCompactMetadata();
    /**
     * <code>optional bool compact_metadata = 8 [default = false];</code>
     * @return The compactMetadata.
     */
    boolean getCompactMetadata();

    /**
     * <code>optional uint64 snapshot_seq = 9;</code>
     * @return Whether the snapshotSeq field is set.
     */
    boolean hasSnapshotSeq();
    /**
     * <code>optional uint64 snapshot_seq = 9;</code>
     * @return The snapshotSeq.
     */
    long getSnapshotSeq();

    /**
     * <code>optional uint64 commit_seq = 10;</code>
     * @return Whether the commitSeq field is set.
     */
    boolean hasCommitSeq();
    /**
     * <code>optional uint64 commit_seq = 10;</code>
     * @return The commitSeq.
     */
    long getCommitSeq();

    /**
     * <code>optional bool use_cts_transaction = 12;</code>
     * @return Whether the useCtsTransaction field is set.
     */
    boolean hasUseCtsTransaction();
    /**
     * <code>optional bool use_cts_transaction = 12;</code>
     * @return The useCtsTransaction.
     */
    boolean getUseCtsTransaction();

    /**
     * <code>optional bool chunk_result = 11 [default = false];</code>
     * @return Whether the chunkResult field is set.
     */
    boolean hasChunkResult();
    /**
     * <code>optional bool chunk_result = 11 [default = false];</code>
     * @return The chunkResult.
     */
    boolean getChunkResult();

    /**
     * <code>optional bool feed_back = 13 [default = false];</code>
     * @return Whether the feedBack field is set.
     */
    boolean hasFeedBack();
    /**
     * <code>optional bool feed_back = 13 [default = false];</code>
     * @return The feedBack.
     */
    boolean getFeedBack();
  }
  /**
   * <pre>
   * server接收的plan
   * </pre>
   *
   * Protobuf type {@code Polarx.ExecPlan.ExecPlan}
   */
  public  static final class ExecPlan extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:Polarx.ExecPlan.ExecPlan)
      ExecPlanOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ExecPlan.newBuilder() to construct.
    private ExecPlan(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ExecPlan() {
      planDigest_ = com.google.protobuf.ByteString.EMPTY;
      parameters_ = java.util.Collections.emptyList();
      sessionVariables_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ExecPlan();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ExecPlan(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) != 0)) {
                subBuilder = transaction_.toBuilder();
              }
              transaction_ = input.readMessage(com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(transaction_);
                transaction_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) != 0)) {
                subBuilder = plan_.toBuilder();
              }
              plan_ = input.readMessage(com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(plan_);
                plan_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 26: {
              bitField0_ |= 0x00000004;
              planDigest_ = input.readBytes();
              break;
            }
            case 34: {
              if (!((mutable_bitField0_ & 0x00000008) != 0)) {
                parameters_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar>();
                mutable_bitField0_ |= 0x00000008;
              }
              parameters_.add(
                  input.readMessage(com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.PARSER, extensionRegistry));
              break;
            }
            case 42: {
              if (!((mutable_bitField0_ & 0x00000010) != 0)) {
                sessionVariables_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.PolarxDatatypes.SessionVariable>();
                mutable_bitField0_ |= 0x00000010;
              }
              sessionVariables_.add(
                  input.readMessage(com.mysql.cj.x.protobuf.PolarxDatatypes.SessionVariable.PARSER, extensionRegistry));
              break;
            }
            case 48: {
              bitField0_ |= 0x00000008;
              token_ = input.readInt32();
              break;
            }
            case 56: {
              bitField0_ |= 0x00000010;
              resetError_ = input.readBool();
              break;
            }
            case 64: {
              bitField0_ |= 0x00000020;
              compactMetadata_ = input.readBool();
              break;
            }
            case 72: {
              bitField0_ |= 0x00000040;
              snapshotSeq_ = input.readUInt64();
              break;
            }
            case 80: {
              bitField0_ |= 0x00000080;
              commitSeq_ = input.readUInt64();
              break;
            }
            case 88: {
              bitField0_ |= 0x00000200;
              chunkResult_ = input.readBool();
              break;
            }
            case 96: {
              bitField0_ |= 0x00000100;
              useCtsTransaction_ = input.readBool();
              break;
            }
            case 104: {
              bitField0_ |= 0x00000400;
              feedBack_ = input.readBool();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000008) != 0)) {
          parameters_ = java.util.Collections.unmodifiableList(parameters_);
        }
        if (((mutable_bitField0_ & 0x00000010) != 0)) {
          sessionVariables_ = java.util.Collections.unmodifiableList(sessionVariables_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_ExecPlan_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_ExecPlan_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.mysql.cj.x.protobuf.PolarxExecPlan.ExecPlan.class, com.mysql.cj.x.protobuf.PolarxExecPlan.ExecPlan.Builder.class);
    }

    private int bitField0_;
    public static final int TRANSACTION_FIELD_NUMBER = 1;
    private com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction transaction_;
    /**
     * <code>optional .Polarx.ExecPlan.Transaction transaction = 1;</code>
     * @return Whether the transaction field is set.
     */
    public boolean hasTransaction() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>optional .Polarx.ExecPlan.Transaction transaction = 1;</code>
     * @return The transaction.
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction getTransaction() {
      return transaction_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.getDefaultInstance() : transaction_;
    }
    /**
     * <code>optional .Polarx.ExecPlan.Transaction transaction = 1;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.TransactionOrBuilder getTransactionOrBuilder() {
      return transaction_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.getDefaultInstance() : transaction_;
    }

    public static final int PLAN_FIELD_NUMBER = 2;
    private com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan plan_;
    /**
     * <code>optional .Polarx.ExecPlan.AnyPlan plan = 2;</code>
     * @return Whether the plan field is set.
     */
    public boolean hasPlan() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>optional .Polarx.ExecPlan.AnyPlan plan = 2;</code>
     * @return The plan.
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan getPlan() {
      return plan_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.getDefaultInstance() : plan_;
    }
    /**
     * <code>optional .Polarx.ExecPlan.AnyPlan plan = 2;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlanOrBuilder getPlanOrBuilder() {
      return plan_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.getDefaultInstance() : plan_;
    }

    public static final int PLAN_DIGEST_FIELD_NUMBER = 3;
    private com.google.protobuf.ByteString planDigest_;
    /**
     * <code>optional bytes plan_digest = 3;</code>
     * @return Whether the planDigest field is set.
     */
    public boolean hasPlanDigest() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>optional bytes plan_digest = 3;</code>
     * @return The planDigest.
     */
    public com.google.protobuf.ByteString getPlanDigest() {
      return planDigest_;
    }

    public static final int PARAMETERS_FIELD_NUMBER = 4;
    private java.util.List<com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar> parameters_;
    /**
     * <pre>
     * 动态参数记录在这，从0开始 **有修改**
     * </pre>
     *
     * <code>repeated .Polarx.Datatypes.Scalar parameters = 4;</code>
     */
    public java.util.List<com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar> getParametersList() {
      return parameters_;
    }
    /**
     * <pre>
     * 动态参数记录在这，从0开始 **有修改**
     * </pre>
     *
     * <code>repeated .Polarx.Datatypes.Scalar parameters = 4;</code>
     */
    public java.util.List<? extends com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder> 
        getParametersOrBuilderList() {
      return parameters_;
    }
    /**
     * <pre>
     * 动态参数记录在这，从0开始 **有修改**
     * </pre>
     *
     * <code>repeated .Polarx.Datatypes.Scalar parameters = 4;</code>
     */
    public int getParametersCount() {
      return parameters_.size();
    }
    /**
     * <pre>
     * 动态参数记录在这，从0开始 **有修改**
     * </pre>
     *
     * <code>repeated .Polarx.Datatypes.Scalar parameters = 4;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar getParameters(int index) {
      return parameters_.get(index);
    }
    /**
     * <pre>
     * 动态参数记录在这，从0开始 **有修改**
     * </pre>
     *
     * <code>repeated .Polarx.Datatypes.Scalar parameters = 4;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder getParametersOrBuilder(
        int index) {
      return parameters_.get(index);
    }

    public static final int SESSION_VARIABLES_FIELD_NUMBER = 5;
    private java.util.List<com.mysql.cj.x.protobuf.PolarxDatatypes.SessionVariable> sessionVariables_;
    /**
     * <code>repeated .Polarx.Datatypes.SessionVariable session_variables = 5;</code>
     */
    public java.util.List<com.mysql.cj.x.protobuf.PolarxDatatypes.SessionVariable> getSessionVariablesList() {
      return sessionVariables_;
    }
    /**
     * <code>repeated .Polarx.Datatypes.SessionVariable session_variables = 5;</code>
     */
    public java.util.List<? extends com.mysql.cj.x.protobuf.PolarxDatatypes.SessionVariableOrBuilder> 
        getSessionVariablesOrBuilderList() {
      return sessionVariables_;
    }
    /**
     * <code>repeated .Polarx.Datatypes.SessionVariable session_variables = 5;</code>
     */
    public int getSessionVariablesCount() {
      return sessionVariables_.size();
    }
    /**
     * <code>repeated .Polarx.Datatypes.SessionVariable session_variables = 5;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxDatatypes.SessionVariable getSessionVariables(int index) {
      return sessionVariables_.get(index);
    }
    /**
     * <code>repeated .Polarx.Datatypes.SessionVariable session_variables = 5;</code>
     */
    public com.mysql.cj.x.protobuf.PolarxDatatypes.SessionVariableOrBuilder getSessionVariablesOrBuilder(
        int index) {
      return sessionVariables_.get(index);
    }

    public static final int TOKEN_FIELD_NUMBER = 6;
    private int token_;
    /**
     * <code>optional int32 token = 6;</code>
     * @return Whether the token field is set.
     */
    public boolean hasToken() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>optional int32 token = 6;</code>
     * @return The token.
     */
    public int getToken() {
      return token_;
    }

    public static final int RESET_ERROR_FIELD_NUMBER = 7;
    private boolean resetError_;
    /**
     * <code>optional bool reset_error = 7;</code>
     * @return Whether the resetError field is set.
     */
    public boolean hasResetError() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <code>optional bool reset_error = 7;</code>
     * @return The resetError.
     */
    public boolean getResetError() {
      return resetError_;
    }

    public static final int COMPACT_METADATA_FIELD_NUMBER = 8;
    private boolean compactMetadata_;
    /**
     * <code>optional bool compact_metadata = 8 [default = false];</code>
     * @return Whether the compactMetadata field is set.
     */
    public boolean hasCompactMetadata() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <code>optional bool compact_metadata = 8 [default = false];</code>
     * @return The compactMetadata.
     */
    public boolean getCompactMetadata() {
      return compactMetadata_;
    }

    public static final int SNAPSHOT_SEQ_FIELD_NUMBER = 9;
    private long snapshotSeq_;
    /**
     * <code>optional uint64 snapshot_seq = 9;</code>
     * @return Whether the snapshotSeq field is set.
     */
    public boolean hasSnapshotSeq() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <code>optional uint64 snapshot_seq = 9;</code>
     * @return The snapshotSeq.
     */
    public long getSnapshotSeq() {
      return snapshotSeq_;
    }

    public static final int COMMIT_SEQ_FIELD_NUMBER = 10;
    private long commitSeq_;
    /**
     * <code>optional uint64 commit_seq = 10;</code>
     * @return Whether the commitSeq field is set.
     */
    public boolean hasCommitSeq() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <code>optional uint64 commit_seq = 10;</code>
     * @return The commitSeq.
     */
    public long getCommitSeq() {
      return commitSeq_;
    }

    public static final int USE_CTS_TRANSACTION_FIELD_NUMBER = 12;
    private boolean useCtsTransaction_;
    /**
     * <code>optional bool use_cts_transaction = 12;</code>
     * @return Whether the useCtsTransaction field is set.
     */
    public boolean hasUseCtsTransaction() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     * <code>optional bool use_cts_transaction = 12;</code>
     * @return The useCtsTransaction.
     */
    public boolean getUseCtsTransaction() {
      return useCtsTransaction_;
    }

    public static final int CHUNK_RESULT_FIELD_NUMBER = 11;
    private boolean chunkResult_;
    /**
     * <code>optional bool chunk_result = 11 [default = false];</code>
     * @return Whether the chunkResult field is set.
     */
    public boolean hasChunkResult() {
      return ((bitField0_ & 0x00000200) != 0);
    }
    /**
     * <code>optional bool chunk_result = 11 [default = false];</code>
     * @return The chunkResult.
     */
    public boolean getChunkResult() {
      return chunkResult_;
    }

    public static final int FEED_BACK_FIELD_NUMBER = 13;
    private boolean feedBack_;
    /**
     * <code>optional bool feed_back = 13 [default = false];</code>
     * @return Whether the feedBack field is set.
     */
    public boolean hasFeedBack() {
      return ((bitField0_ & 0x00000400) != 0);
    }
    /**
     * <code>optional bool feed_back = 13 [default = false];</code>
     * @return The feedBack.
     */
    public boolean getFeedBack() {
      return feedBack_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (hasPlan()) {
        if (!getPlan().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getParametersCount(); i++) {
        if (!getParameters(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getSessionVariablesCount(); i++) {
        if (!getSessionVariables(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getTransaction());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getPlan());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeBytes(3, planDigest_);
      }
      for (int i = 0; i < parameters_.size(); i++) {
        output.writeMessage(4, parameters_.get(i));
      }
      for (int i = 0; i < sessionVariables_.size(); i++) {
        output.writeMessage(5, sessionVariables_.get(i));
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeInt32(6, token_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeBool(7, resetError_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeBool(8, compactMetadata_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeUInt64(9, snapshotSeq_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        output.writeUInt64(10, commitSeq_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        output.writeBool(11, chunkResult_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        output.writeBool(12, useCtsTransaction_);
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        output.writeBool(13, feedBack_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getTransaction());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getPlan());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, planDigest_);
      }
      for (int i = 0; i < parameters_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, parameters_.get(i));
      }
      for (int i = 0; i < sessionVariables_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, sessionVariables_.get(i));
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(6, token_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(7, resetError_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(8, compactMetadata_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(9, snapshotSeq_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(10, commitSeq_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(11, chunkResult_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(12, useCtsTransaction_);
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(13, feedBack_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.ExecPlan)) {
        return super.equals(obj);
      }
      com.mysql.cj.x.protobuf.PolarxExecPlan.ExecPlan other = (com.mysql.cj.x.protobuf.PolarxExecPlan.ExecPlan) obj;

      if (hasTransaction() != other.hasTransaction()) return false;
      if (hasTransaction()) {
        if (!getTransaction()
            .equals(other.getTransaction())) return false;
      }
      if (hasPlan() != other.hasPlan()) return false;
      if (hasPlan()) {
        if (!getPlan()
            .equals(other.getPlan())) return false;
      }
      if (hasPlanDigest() != other.hasPlanDigest()) return false;
      if (hasPlanDigest()) {
        if (!getPlanDigest()
            .equals(other.getPlanDigest())) return false;
      }
      if (!getParametersList()
          .equals(other.getParametersList())) return false;
      if (!getSessionVariablesList()
          .equals(other.getSessionVariablesList())) return false;
      if (hasToken() != other.hasToken()) return false;
      if (hasToken()) {
        if (getToken()
            != other.getToken()) return false;
      }
      if (hasResetError() != other.hasResetError()) return false;
      if (hasResetError()) {
        if (getResetError()
            != other.getResetError()) return false;
      }
      if (hasCompactMetadata() != other.hasCompactMetadata()) return false;
      if (hasCompactMetadata()) {
        if (getCompactMetadata()
            != other.getCompactMetadata()) return false;
      }
      if (hasSnapshotSeq() != other.hasSnapshotSeq()) return false;
      if (hasSnapshotSeq()) {
        if (getSnapshotSeq()
            != other.getSnapshotSeq()) return false;
      }
      if (hasCommitSeq() != other.hasCommitSeq()) return false;
      if (hasCommitSeq()) {
        if (getCommitSeq()
            != other.getCommitSeq()) return false;
      }
      if (hasUseCtsTransaction() != other.hasUseCtsTransaction()) return false;
      if (hasUseCtsTransaction()) {
        if (getUseCtsTransaction()
            != other.getUseCtsTransaction()) return false;
      }
      if (hasChunkResult() != other.hasChunkResult()) return false;
      if (hasChunkResult()) {
        if (getChunkResult()
            != other.getChunkResult()) return false;
      }
      if (hasFeedBack() != other.hasFeedBack()) return false;
      if (hasFeedBack()) {
        if (getFeedBack()
            != other.getFeedBack()) return false;
      }
        return unknownFields.equals(other.unknownFields);
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasTransaction()) {
        hash = (37 * hash) + TRANSACTION_FIELD_NUMBER;
        hash = (53 * hash) + getTransaction().hashCode();
      }
      if (hasPlan()) {
        hash = (37 * hash) + PLAN_FIELD_NUMBER;
        hash = (53 * hash) + getPlan().hashCode();
      }
      if (hasPlanDigest()) {
        hash = (37 * hash) + PLAN_DIGEST_FIELD_NUMBER;
        hash = (53 * hash) + getPlanDigest().hashCode();
      }
      if (getParametersCount() > 0) {
        hash = (37 * hash) + PARAMETERS_FIELD_NUMBER;
        hash = (53 * hash) + getParametersList().hashCode();
      }
      if (getSessionVariablesCount() > 0) {
        hash = (37 * hash) + SESSION_VARIABLES_FIELD_NUMBER;
        hash = (53 * hash) + getSessionVariablesList().hashCode();
      }
      if (hasToken()) {
        hash = (37 * hash) + TOKEN_FIELD_NUMBER;
        hash = (53 * hash) + getToken();
      }
      if (hasResetError()) {
        hash = (37 * hash) + RESET_ERROR_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getResetError());
      }
      if (hasCompactMetadata()) {
        hash = (37 * hash) + COMPACT_METADATA_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getCompactMetadata());
      }
      if (hasSnapshotSeq()) {
        hash = (37 * hash) + SNAPSHOT_SEQ_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getSnapshotSeq());
      }
      if (hasCommitSeq()) {
        hash = (37 * hash) + COMMIT_SEQ_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getCommitSeq());
      }
      if (hasUseCtsTransaction()) {
        hash = (37 * hash) + USE_CTS_TRANSACTION_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getUseCtsTransaction());
      }
      if (hasChunkResult()) {
        hash = (37 * hash) + CHUNK_RESULT_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getChunkResult());
      }
      if (hasFeedBack()) {
        hash = (37 * hash) + FEED_BACK_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getFeedBack());
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.ExecPlan parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.ExecPlan parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.ExecPlan parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.ExecPlan parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.ExecPlan parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.ExecPlan parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.ExecPlan parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.ExecPlan parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.ExecPlan parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.ExecPlan parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.ExecPlan parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.mysql.cj.x.protobuf.PolarxExecPlan.ExecPlan parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.mysql.cj.x.protobuf.PolarxExecPlan.ExecPlan prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * server接收的plan
     * </pre>
     *
     * Protobuf type {@code Polarx.ExecPlan.ExecPlan}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:Polarx.ExecPlan.ExecPlan)
        com.mysql.cj.x.protobuf.PolarxExecPlan.ExecPlanOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_ExecPlan_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_ExecPlan_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.mysql.cj.x.protobuf.PolarxExecPlan.ExecPlan.class, com.mysql.cj.x.protobuf.PolarxExecPlan.ExecPlan.Builder.class);
      }

      // Construct using com.mysql.cj.x.protobuf.PolarxExecPlan.ExecPlan.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getTransactionFieldBuilder();
          getPlanFieldBuilder();
          getParametersFieldBuilder();
          getSessionVariablesFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (transactionBuilder_ == null) {
          transaction_ = null;
        } else {
          transactionBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (planBuilder_ == null) {
          plan_ = null;
        } else {
          planBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        planDigest_ = com.google.protobuf.ByteString.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        if (parametersBuilder_ == null) {
          parameters_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
        } else {
          parametersBuilder_.clear();
        }
        if (sessionVariablesBuilder_ == null) {
          sessionVariables_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000010);
        } else {
          sessionVariablesBuilder_.clear();
        }
        token_ = 0;
        bitField0_ = (bitField0_ & ~0x00000020);
        resetError_ = false;
        bitField0_ = (bitField0_ & ~0x00000040);
        compactMetadata_ = false;
        bitField0_ = (bitField0_ & ~0x00000080);
        snapshotSeq_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000100);
        commitSeq_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000200);
        useCtsTransaction_ = false;
        bitField0_ = (bitField0_ & ~0x00000400);
        chunkResult_ = false;
        bitField0_ = (bitField0_ & ~0x00000800);
        feedBack_ = false;
        bitField0_ = (bitField0_ & ~0x00001000);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.internal_static_Polarx_ExecPlan_ExecPlan_descriptor;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.ExecPlan getDefaultInstanceForType() {
        return com.mysql.cj.x.protobuf.PolarxExecPlan.ExecPlan.getDefaultInstance();
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.ExecPlan build() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.ExecPlan result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.mysql.cj.x.protobuf.PolarxExecPlan.ExecPlan buildPartial() {
        com.mysql.cj.x.protobuf.PolarxExecPlan.ExecPlan result = new com.mysql.cj.x.protobuf.PolarxExecPlan.ExecPlan(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          if (transactionBuilder_ == null) {
            result.transaction_ = transaction_;
          } else {
            result.transaction_ = transactionBuilder_.build();
          }
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          if (planBuilder_ == null) {
            result.plan_ = plan_;
          } else {
            result.plan_ = planBuilder_.build();
          }
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          to_bitField0_ |= 0x00000004;
        }
        result.planDigest_ = planDigest_;
        if (parametersBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0)) {
            parameters_ = java.util.Collections.unmodifiableList(parameters_);
            bitField0_ = (bitField0_ & ~0x00000008);
          }
          result.parameters_ = parameters_;
        } else {
          result.parameters_ = parametersBuilder_.build();
        }
        if (sessionVariablesBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0)) {
            sessionVariables_ = java.util.Collections.unmodifiableList(sessionVariables_);
            bitField0_ = (bitField0_ & ~0x00000010);
          }
          result.sessionVariables_ = sessionVariables_;
        } else {
          result.sessionVariables_ = sessionVariablesBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.token_ = token_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.resetError_ = resetError_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.compactMetadata_ = compactMetadata_;
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.snapshotSeq_ = snapshotSeq_;
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.commitSeq_ = commitSeq_;
          to_bitField0_ |= 0x00000080;
        }
        if (((from_bitField0_ & 0x00000400) != 0)) {
          result.useCtsTransaction_ = useCtsTransaction_;
          to_bitField0_ |= 0x00000100;
        }
        if (((from_bitField0_ & 0x00000800) != 0)) {
          result.chunkResult_ = chunkResult_;
          to_bitField0_ |= 0x00000200;
        }
        if (((from_bitField0_ & 0x00001000) != 0)) {
          result.feedBack_ = feedBack_;
          to_bitField0_ |= 0x00000400;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.mysql.cj.x.protobuf.PolarxExecPlan.ExecPlan) {
          return mergeFrom((com.mysql.cj.x.protobuf.PolarxExecPlan.ExecPlan)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.mysql.cj.x.protobuf.PolarxExecPlan.ExecPlan other) {
        if (other == com.mysql.cj.x.protobuf.PolarxExecPlan.ExecPlan.getDefaultInstance()) return this;
        if (other.hasTransaction()) {
          mergeTransaction(other.getTransaction());
        }
        if (other.hasPlan()) {
          mergePlan(other.getPlan());
        }
        if (other.hasPlanDigest()) {
          setPlanDigest(other.getPlanDigest());
        }
        if (parametersBuilder_ == null) {
          if (!other.parameters_.isEmpty()) {
            if (parameters_.isEmpty()) {
              parameters_ = other.parameters_;
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              ensureParametersIsMutable();
              parameters_.addAll(other.parameters_);
            }
            onChanged();
          }
        } else {
          if (!other.parameters_.isEmpty()) {
            if (parametersBuilder_.isEmpty()) {
              parametersBuilder_.dispose();
              parametersBuilder_ = null;
              parameters_ = other.parameters_;
              bitField0_ = (bitField0_ & ~0x00000008);
              parametersBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getParametersFieldBuilder() : null;
            } else {
              parametersBuilder_.addAllMessages(other.parameters_);
            }
          }
        }
        if (sessionVariablesBuilder_ == null) {
          if (!other.sessionVariables_.isEmpty()) {
            if (sessionVariables_.isEmpty()) {
              sessionVariables_ = other.sessionVariables_;
              bitField0_ = (bitField0_ & ~0x00000010);
            } else {
              ensureSessionVariablesIsMutable();
              sessionVariables_.addAll(other.sessionVariables_);
            }
            onChanged();
          }
        } else {
          if (!other.sessionVariables_.isEmpty()) {
            if (sessionVariablesBuilder_.isEmpty()) {
              sessionVariablesBuilder_.dispose();
              sessionVariablesBuilder_ = null;
              sessionVariables_ = other.sessionVariables_;
              bitField0_ = (bitField0_ & ~0x00000010);
              sessionVariablesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getSessionVariablesFieldBuilder() : null;
            } else {
              sessionVariablesBuilder_.addAllMessages(other.sessionVariables_);
            }
          }
        }
        if (other.hasToken()) {
          setToken(other.getToken());
        }
        if (other.hasResetError()) {
          setResetError(other.getResetError());
        }
        if (other.hasCompactMetadata()) {
          setCompactMetadata(other.getCompactMetadata());
        }
        if (other.hasSnapshotSeq()) {
          setSnapshotSeq(other.getSnapshotSeq());
        }
        if (other.hasCommitSeq()) {
          setCommitSeq(other.getCommitSeq());
        }
        if (other.hasUseCtsTransaction()) {
          setUseCtsTransaction(other.getUseCtsTransaction());
        }
        if (other.hasChunkResult()) {
          setChunkResult(other.getChunkResult());
        }
        if (other.hasFeedBack()) {
          setFeedBack(other.getFeedBack());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (hasPlan()) {
          if (!getPlan().isInitialized()) {
            return false;
          }
        }
        for (int i = 0; i < getParametersCount(); i++) {
          if (!getParameters(i).isInitialized()) {
            return false;
          }
        }
        for (int i = 0; i < getSessionVariablesCount(); i++) {
          if (!getSessionVariables(i).isInitialized()) {
            return false;
          }
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.mysql.cj.x.protobuf.PolarxExecPlan.ExecPlan parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.mysql.cj.x.protobuf.PolarxExecPlan.ExecPlan) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction transaction_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction, com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.TransactionOrBuilder> transactionBuilder_;
      /**
       * <code>optional .Polarx.ExecPlan.Transaction transaction = 1;</code>
       * @return Whether the transaction field is set.
       */
      public boolean hasTransaction() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional .Polarx.ExecPlan.Transaction transaction = 1;</code>
       * @return The transaction.
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction getTransaction() {
        if (transactionBuilder_ == null) {
          return transaction_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.getDefaultInstance() : transaction_;
        } else {
          return transactionBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .Polarx.ExecPlan.Transaction transaction = 1;</code>
       */
      public Builder setTransaction(com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction value) {
        if (transactionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          transaction_ = value;
          onChanged();
        } else {
          transactionBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.Transaction transaction = 1;</code>
       */
      public Builder setTransaction(
          com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.Builder builderForValue) {
        if (transactionBuilder_ == null) {
          transaction_ = builderForValue.build();
          onChanged();
        } else {
          transactionBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.Transaction transaction = 1;</code>
       */
      public Builder mergeTransaction(com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction value) {
        if (transactionBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
              transaction_ != null &&
              transaction_ != com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.getDefaultInstance()) {
            transaction_ =
              com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.newBuilder(transaction_).mergeFrom(value).buildPartial();
          } else {
            transaction_ = value;
          }
          onChanged();
        } else {
          transactionBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.Transaction transaction = 1;</code>
       */
      public Builder clearTransaction() {
        if (transactionBuilder_ == null) {
          transaction_ = null;
          onChanged();
        } else {
          transactionBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.Transaction transaction = 1;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.Builder getTransactionBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getTransactionFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .Polarx.ExecPlan.Transaction transaction = 1;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.TransactionOrBuilder getTransactionOrBuilder() {
        if (transactionBuilder_ != null) {
          return transactionBuilder_.getMessageOrBuilder();
        } else {
          return transaction_ == null ?
              com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.getDefaultInstance() : transaction_;
        }
      }
      /**
       * <code>optional .Polarx.ExecPlan.Transaction transaction = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction, com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.TransactionOrBuilder> 
          getTransactionFieldBuilder() {
        if (transactionBuilder_ == null) {
          transactionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction, com.mysql.cj.x.protobuf.PolarxExecPlan.Transaction.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.TransactionOrBuilder>(
                  getTransaction(),
                  getParentForChildren(),
                  isClean());
          transaction_ = null;
        }
        return transactionBuilder_;
      }

      private com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan plan_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan, com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlanOrBuilder> planBuilder_;
      /**
       * <code>optional .Polarx.ExecPlan.AnyPlan plan = 2;</code>
       * @return Whether the plan field is set.
       */
      public boolean hasPlan() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional .Polarx.ExecPlan.AnyPlan plan = 2;</code>
       * @return The plan.
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan getPlan() {
        if (planBuilder_ == null) {
          return plan_ == null ? com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.getDefaultInstance() : plan_;
        } else {
          return planBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .Polarx.ExecPlan.AnyPlan plan = 2;</code>
       */
      public Builder setPlan(com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan value) {
        if (planBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          plan_ = value;
          onChanged();
        } else {
          planBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.AnyPlan plan = 2;</code>
       */
      public Builder setPlan(
          com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.Builder builderForValue) {
        if (planBuilder_ == null) {
          plan_ = builderForValue.build();
          onChanged();
        } else {
          planBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.AnyPlan plan = 2;</code>
       */
      public Builder mergePlan(com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan value) {
        if (planBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
              plan_ != null &&
              plan_ != com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.getDefaultInstance()) {
            plan_ =
              com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.newBuilder(plan_).mergeFrom(value).buildPartial();
          } else {
            plan_ = value;
          }
          onChanged();
        } else {
          planBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.AnyPlan plan = 2;</code>
       */
      public Builder clearPlan() {
        if (planBuilder_ == null) {
          plan_ = null;
          onChanged();
        } else {
          planBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      /**
       * <code>optional .Polarx.ExecPlan.AnyPlan plan = 2;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.Builder getPlanBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getPlanFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .Polarx.ExecPlan.AnyPlan plan = 2;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlanOrBuilder getPlanOrBuilder() {
        if (planBuilder_ != null) {
          return planBuilder_.getMessageOrBuilder();
        } else {
          return plan_ == null ?
              com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.getDefaultInstance() : plan_;
        }
      }
      /**
       * <code>optional .Polarx.ExecPlan.AnyPlan plan = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan, com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlanOrBuilder> 
          getPlanFieldBuilder() {
        if (planBuilder_ == null) {
          planBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan, com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlan.Builder, com.mysql.cj.x.protobuf.PolarxExecPlan.AnyPlanOrBuilder>(
                  getPlan(),
                  getParentForChildren(),
                  isClean());
          plan_ = null;
        }
        return planBuilder_;
      }

      private com.google.protobuf.ByteString planDigest_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>optional bytes plan_digest = 3;</code>
       * @return Whether the planDigest field is set.
       */
      public boolean hasPlanDigest() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional bytes plan_digest = 3;</code>
       * @return The planDigest.
       */
      public com.google.protobuf.ByteString getPlanDigest() {
        return planDigest_;
      }
      /**
       * <code>optional bytes plan_digest = 3;</code>
       * @param value The planDigest to set.
       * @return This builder for chaining.
       */
      public Builder setPlanDigest(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        planDigest_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bytes plan_digest = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearPlanDigest() {
        bitField0_ = (bitField0_ & ~0x00000004);
        planDigest_ = getDefaultInstance().getPlanDigest();
        onChanged();
        return this;
      }

      private java.util.List<com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar> parameters_ =
        java.util.Collections.emptyList();
      private void ensureParametersIsMutable() {
        if (!((bitField0_ & 0x00000008) != 0)) {
          parameters_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar>(parameters_);
          bitField0_ |= 0x00000008;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder, com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder> parametersBuilder_;

      /**
       * <pre>
       * 动态参数记录在这，从0开始 **有修改**
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar parameters = 4;</code>
       */
      public java.util.List<com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar> getParametersList() {
        if (parametersBuilder_ == null) {
          return java.util.Collections.unmodifiableList(parameters_);
        } else {
          return parametersBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * 动态参数记录在这，从0开始 **有修改**
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar parameters = 4;</code>
       */
      public int getParametersCount() {
        if (parametersBuilder_ == null) {
          return parameters_.size();
        } else {
          return parametersBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * 动态参数记录在这，从0开始 **有修改**
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar parameters = 4;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar getParameters(int index) {
        if (parametersBuilder_ == null) {
          return parameters_.get(index);
        } else {
          return parametersBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * 动态参数记录在这，从0开始 **有修改**
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar parameters = 4;</code>
       */
      public Builder setParameters(
          int index, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar value) {
        if (parametersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureParametersIsMutable();
          parameters_.set(index, value);
          onChanged();
        } else {
          parametersBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * 动态参数记录在这，从0开始 **有修改**
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar parameters = 4;</code>
       */
      public Builder setParameters(
          int index, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder builderForValue) {
        if (parametersBuilder_ == null) {
          ensureParametersIsMutable();
          parameters_.set(index, builderForValue.build());
          onChanged();
        } else {
          parametersBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * 动态参数记录在这，从0开始 **有修改**
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar parameters = 4;</code>
       */
      public Builder addParameters(com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar value) {
        if (parametersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureParametersIsMutable();
          parameters_.add(value);
          onChanged();
        } else {
          parametersBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * 动态参数记录在这，从0开始 **有修改**
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar parameters = 4;</code>
       */
      public Builder addParameters(
          int index, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar value) {
        if (parametersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureParametersIsMutable();
          parameters_.add(index, value);
          onChanged();
        } else {
          parametersBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * 动态参数记录在这，从0开始 **有修改**
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar parameters = 4;</code>
       */
      public Builder addParameters(
          com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder builderForValue) {
        if (parametersBuilder_ == null) {
          ensureParametersIsMutable();
          parameters_.add(builderForValue.build());
          onChanged();
        } else {
          parametersBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * 动态参数记录在这，从0开始 **有修改**
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar parameters = 4;</code>
       */
      public Builder addParameters(
          int index, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder builderForValue) {
        if (parametersBuilder_ == null) {
          ensureParametersIsMutable();
          parameters_.add(index, builderForValue.build());
          onChanged();
        } else {
          parametersBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * 动态参数记录在这，从0开始 **有修改**
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar parameters = 4;</code>
       */
      public Builder addAllParameters(
          java.lang.Iterable<? extends com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar> values) {
        if (parametersBuilder_ == null) {
          ensureParametersIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, parameters_);
          onChanged();
        } else {
          parametersBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * 动态参数记录在这，从0开始 **有修改**
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar parameters = 4;</code>
       */
      public Builder clearParameters() {
        if (parametersBuilder_ == null) {
          parameters_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
        } else {
          parametersBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * 动态参数记录在这，从0开始 **有修改**
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar parameters = 4;</code>
       */
      public Builder removeParameters(int index) {
        if (parametersBuilder_ == null) {
          ensureParametersIsMutable();
          parameters_.remove(index);
          onChanged();
        } else {
          parametersBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * 动态参数记录在这，从0开始 **有修改**
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar parameters = 4;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder getParametersBuilder(
          int index) {
        return getParametersFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * 动态参数记录在这，从0开始 **有修改**
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar parameters = 4;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder getParametersOrBuilder(
          int index) {
        if (parametersBuilder_ == null) {
          return parameters_.get(index);  } else {
          return parametersBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * 动态参数记录在这，从0开始 **有修改**
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar parameters = 4;</code>
       */
      public java.util.List<? extends com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder> 
           getParametersOrBuilderList() {
        if (parametersBuilder_ != null) {
          return parametersBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(parameters_);
        }
      }
      /**
       * <pre>
       * 动态参数记录在这，从0开始 **有修改**
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar parameters = 4;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder addParametersBuilder() {
        return getParametersFieldBuilder().addBuilder(
            com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.getDefaultInstance());
      }
      /**
       * <pre>
       * 动态参数记录在这，从0开始 **有修改**
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar parameters = 4;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder addParametersBuilder(
          int index) {
        return getParametersFieldBuilder().addBuilder(
            index, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.getDefaultInstance());
      }
      /**
       * <pre>
       * 动态参数记录在这，从0开始 **有修改**
       * </pre>
       *
       * <code>repeated .Polarx.Datatypes.Scalar parameters = 4;</code>
       */
      public java.util.List<com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder> 
           getParametersBuilderList() {
        return getParametersFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder, com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder> 
          getParametersFieldBuilder() {
        if (parametersBuilder_ == null) {
          parametersBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar, com.mysql.cj.x.protobuf.PolarxDatatypes.Scalar.Builder, com.mysql.cj.x.protobuf.PolarxDatatypes.ScalarOrBuilder>(
                  parameters_,
                  ((bitField0_ & 0x00000008) != 0),
                  getParentForChildren(),
                  isClean());
          parameters_ = null;
        }
        return parametersBuilder_;
      }

      private java.util.List<com.mysql.cj.x.protobuf.PolarxDatatypes.SessionVariable> sessionVariables_ =
        java.util.Collections.emptyList();
      private void ensureSessionVariablesIsMutable() {
        if (!((bitField0_ & 0x00000010) != 0)) {
          sessionVariables_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.PolarxDatatypes.SessionVariable>(sessionVariables_);
          bitField0_ |= 0x00000010;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxDatatypes.SessionVariable, com.mysql.cj.x.protobuf.PolarxDatatypes.SessionVariable.Builder, com.mysql.cj.x.protobuf.PolarxDatatypes.SessionVariableOrBuilder> sessionVariablesBuilder_;

      /**
       * <code>repeated .Polarx.Datatypes.SessionVariable session_variables = 5;</code>
       */
      public java.util.List<com.mysql.cj.x.protobuf.PolarxDatatypes.SessionVariable> getSessionVariablesList() {
        if (sessionVariablesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(sessionVariables_);
        } else {
          return sessionVariablesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .Polarx.Datatypes.SessionVariable session_variables = 5;</code>
       */
      public int getSessionVariablesCount() {
        if (sessionVariablesBuilder_ == null) {
          return sessionVariables_.size();
        } else {
          return sessionVariablesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .Polarx.Datatypes.SessionVariable session_variables = 5;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxDatatypes.SessionVariable getSessionVariables(int index) {
        if (sessionVariablesBuilder_ == null) {
          return sessionVariables_.get(index);
        } else {
          return sessionVariablesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .Polarx.Datatypes.SessionVariable session_variables = 5;</code>
       */
      public Builder setSessionVariables(
          int index, com.mysql.cj.x.protobuf.PolarxDatatypes.SessionVariable value) {
        if (sessionVariablesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSessionVariablesIsMutable();
          sessionVariables_.set(index, value);
          onChanged();
        } else {
          sessionVariablesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .Polarx.Datatypes.SessionVariable session_variables = 5;</code>
       */
      public Builder setSessionVariables(
          int index, com.mysql.cj.x.protobuf.PolarxDatatypes.SessionVariable.Builder builderForValue) {
        if (sessionVariablesBuilder_ == null) {
          ensureSessionVariablesIsMutable();
          sessionVariables_.set(index, builderForValue.build());
          onChanged();
        } else {
          sessionVariablesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Polarx.Datatypes.SessionVariable session_variables = 5;</code>
       */
      public Builder addSessionVariables(com.mysql.cj.x.protobuf.PolarxDatatypes.SessionVariable value) {
        if (sessionVariablesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSessionVariablesIsMutable();
          sessionVariables_.add(value);
          onChanged();
        } else {
          sessionVariablesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .Polarx.Datatypes.SessionVariable session_variables = 5;</code>
       */
      public Builder addSessionVariables(
          int index, com.mysql.cj.x.protobuf.PolarxDatatypes.SessionVariable value) {
        if (sessionVariablesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSessionVariablesIsMutable();
          sessionVariables_.add(index, value);
          onChanged();
        } else {
          sessionVariablesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .Polarx.Datatypes.SessionVariable session_variables = 5;</code>
       */
      public Builder addSessionVariables(
          com.mysql.cj.x.protobuf.PolarxDatatypes.SessionVariable.Builder builderForValue) {
        if (sessionVariablesBuilder_ == null) {
          ensureSessionVariablesIsMutable();
          sessionVariables_.add(builderForValue.build());
          onChanged();
        } else {
          sessionVariablesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Polarx.Datatypes.SessionVariable session_variables = 5;</code>
       */
      public Builder addSessionVariables(
          int index, com.mysql.cj.x.protobuf.PolarxDatatypes.SessionVariable.Builder builderForValue) {
        if (sessionVariablesBuilder_ == null) {
          ensureSessionVariablesIsMutable();
          sessionVariables_.add(index, builderForValue.build());
          onChanged();
        } else {
          sessionVariablesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .Polarx.Datatypes.SessionVariable session_variables = 5;</code>
       */
      public Builder addAllSessionVariables(
          java.lang.Iterable<? extends com.mysql.cj.x.protobuf.PolarxDatatypes.SessionVariable> values) {
        if (sessionVariablesBuilder_ == null) {
          ensureSessionVariablesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, sessionVariables_);
          onChanged();
        } else {
          sessionVariablesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .Polarx.Datatypes.SessionVariable session_variables = 5;</code>
       */
      public Builder clearSessionVariables() {
        if (sessionVariablesBuilder_ == null) {
          sessionVariables_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000010);
          onChanged();
        } else {
          sessionVariablesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .Polarx.Datatypes.SessionVariable session_variables = 5;</code>
       */
      public Builder removeSessionVariables(int index) {
        if (sessionVariablesBuilder_ == null) {
          ensureSessionVariablesIsMutable();
          sessionVariables_.remove(index);
          onChanged();
        } else {
          sessionVariablesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .Polarx.Datatypes.SessionVariable session_variables = 5;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxDatatypes.SessionVariable.Builder getSessionVariablesBuilder(
          int index) {
        return getSessionVariablesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .Polarx.Datatypes.SessionVariable session_variables = 5;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxDatatypes.SessionVariableOrBuilder getSessionVariablesOrBuilder(
          int index) {
        if (sessionVariablesBuilder_ == null) {
          return sessionVariables_.get(index);  } else {
          return sessionVariablesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .Polarx.Datatypes.SessionVariable session_variables = 5;</code>
       */
      public java.util.List<? extends com.mysql.cj.x.protobuf.PolarxDatatypes.SessionVariableOrBuilder> 
           getSessionVariablesOrBuilderList() {
        if (sessionVariablesBuilder_ != null) {
          return sessionVariablesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(sessionVariables_);
        }
      }
      /**
       * <code>repeated .Polarx.Datatypes.SessionVariable session_variables = 5;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxDatatypes.SessionVariable.Builder addSessionVariablesBuilder() {
        return getSessionVariablesFieldBuilder().addBuilder(
            com.mysql.cj.x.protobuf.PolarxDatatypes.SessionVariable.getDefaultInstance());
      }
      /**
       * <code>repeated .Polarx.Datatypes.SessionVariable session_variables = 5;</code>
       */
      public com.mysql.cj.x.protobuf.PolarxDatatypes.SessionVariable.Builder addSessionVariablesBuilder(
          int index) {
        return getSessionVariablesFieldBuilder().addBuilder(
            index, com.mysql.cj.x.protobuf.PolarxDatatypes.SessionVariable.getDefaultInstance());
      }
      /**
       * <code>repeated .Polarx.Datatypes.SessionVariable session_variables = 5;</code>
       */
      public java.util.List<com.mysql.cj.x.protobuf.PolarxDatatypes.SessionVariable.Builder> 
           getSessionVariablesBuilderList() {
        return getSessionVariablesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.mysql.cj.x.protobuf.PolarxDatatypes.SessionVariable, com.mysql.cj.x.protobuf.PolarxDatatypes.SessionVariable.Builder, com.mysql.cj.x.protobuf.PolarxDatatypes.SessionVariableOrBuilder> 
          getSessionVariablesFieldBuilder() {
        if (sessionVariablesBuilder_ == null) {
          sessionVariablesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.mysql.cj.x.protobuf.PolarxDatatypes.SessionVariable, com.mysql.cj.x.protobuf.PolarxDatatypes.SessionVariable.Builder, com.mysql.cj.x.protobuf.PolarxDatatypes.SessionVariableOrBuilder>(
                  sessionVariables_,
                  ((bitField0_ & 0x00000010) != 0),
                  getParentForChildren(),
                  isClean());
          sessionVariables_ = null;
        }
        return sessionVariablesBuilder_;
      }

      private int token_ ;
      /**
       * <code>optional int32 token = 6;</code>
       * @return Whether the token field is set.
       */
      public boolean hasToken() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <code>optional int32 token = 6;</code>
       * @return The token.
       */
      public int getToken() {
        return token_;
      }
      /**
       * <code>optional int32 token = 6;</code>
       * @param value The token to set.
       * @return This builder for chaining.
       */
      public Builder setToken(int value) {
        bitField0_ |= 0x00000020;
        token_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 token = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearToken() {
        bitField0_ = (bitField0_ & ~0x00000020);
        token_ = 0;
        onChanged();
        return this;
      }

      private boolean resetError_ ;
      /**
       * <code>optional bool reset_error = 7;</code>
       * @return Whether the resetError field is set.
       */
      public boolean hasResetError() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <code>optional bool reset_error = 7;</code>
       * @return The resetError.
       */
      public boolean getResetError() {
        return resetError_;
      }
      /**
       * <code>optional bool reset_error = 7;</code>
       * @param value The resetError to set.
       * @return This builder for chaining.
       */
      public Builder setResetError(boolean value) {
        bitField0_ |= 0x00000040;
        resetError_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool reset_error = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearResetError() {
        bitField0_ = (bitField0_ & ~0x00000040);
        resetError_ = false;
        onChanged();
        return this;
      }

      private boolean compactMetadata_ ;
      /**
       * <code>optional bool compact_metadata = 8 [default = false];</code>
       * @return Whether the compactMetadata field is set.
       */
      public boolean hasCompactMetadata() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <code>optional bool compact_metadata = 8 [default = false];</code>
       * @return The compactMetadata.
       */
      public boolean getCompactMetadata() {
        return compactMetadata_;
      }
      /**
       * <code>optional bool compact_metadata = 8 [default = false];</code>
       * @param value The compactMetadata to set.
       * @return This builder for chaining.
       */
      public Builder setCompactMetadata(boolean value) {
        bitField0_ |= 0x00000080;
        compactMetadata_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool compact_metadata = 8 [default = false];</code>
       * @return This builder for chaining.
       */
      public Builder clearCompactMetadata() {
        bitField0_ = (bitField0_ & ~0x00000080);
        compactMetadata_ = false;
        onChanged();
        return this;
      }

      private long snapshotSeq_ ;
      /**
       * <code>optional uint64 snapshot_seq = 9;</code>
       * @return Whether the snapshotSeq field is set.
       */
      public boolean hasSnapshotSeq() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <code>optional uint64 snapshot_seq = 9;</code>
       * @return The snapshotSeq.
       */
      public long getSnapshotSeq() {
        return snapshotSeq_;
      }
      /**
       * <code>optional uint64 snapshot_seq = 9;</code>
       * @param value The snapshotSeq to set.
       * @return This builder for chaining.
       */
      public Builder setSnapshotSeq(long value) {
        bitField0_ |= 0x00000100;
        snapshotSeq_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint64 snapshot_seq = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearSnapshotSeq() {
        bitField0_ = (bitField0_ & ~0x00000100);
        snapshotSeq_ = 0L;
        onChanged();
        return this;
      }

      private long commitSeq_ ;
      /**
       * <code>optional uint64 commit_seq = 10;</code>
       * @return Whether the commitSeq field is set.
       */
      public boolean hasCommitSeq() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <code>optional uint64 commit_seq = 10;</code>
       * @return The commitSeq.
       */
      public long getCommitSeq() {
        return commitSeq_;
      }
      /**
       * <code>optional uint64 commit_seq = 10;</code>
       * @param value The commitSeq to set.
       * @return This builder for chaining.
       */
      public Builder setCommitSeq(long value) {
        bitField0_ |= 0x00000200;
        commitSeq_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional uint64 commit_seq = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearCommitSeq() {
        bitField0_ = (bitField0_ & ~0x00000200);
        commitSeq_ = 0L;
        onChanged();
        return this;
      }

      private boolean useCtsTransaction_ ;
      /**
       * <code>optional bool use_cts_transaction = 12;</code>
       * @return Whether the useCtsTransaction field is set.
       */
      public boolean hasUseCtsTransaction() {
        return ((bitField0_ & 0x00000400) != 0);
      }
      /**
       * <code>optional bool use_cts_transaction = 12;</code>
       * @return The useCtsTransaction.
       */
      public boolean getUseCtsTransaction() {
        return useCtsTransaction_;
      }
      /**
       * <code>optional bool use_cts_transaction = 12;</code>
       * @param value The useCtsTransaction to set.
       * @return This builder for chaining.
       */
      public Builder setUseCtsTransaction(boolean value) {
        bitField0_ |= 0x00000400;
        useCtsTransaction_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool use_cts_transaction = 12;</code>
       * @return This builder for chaining.
       */
      public Builder clearUseCtsTransaction() {
        bitField0_ = (bitField0_ & ~0x00000400);
        useCtsTransaction_ = false;
        onChanged();
        return this;
      }

      private boolean chunkResult_ ;
      /**
       * <code>optional bool chunk_result = 11 [default = false];</code>
       * @return Whether the chunkResult field is set.
       */
      public boolean hasChunkResult() {
        return ((bitField0_ & 0x00000800) != 0);
      }
      /**
       * <code>optional bool chunk_result = 11 [default = false];</code>
       * @return The chunkResult.
       */
      public boolean getChunkResult() {
        return chunkResult_;
      }
      /**
       * <code>optional bool chunk_result = 11 [default = false];</code>
       * @param value The chunkResult to set.
       * @return This builder for chaining.
       */
      public Builder setChunkResult(boolean value) {
        bitField0_ |= 0x00000800;
        chunkResult_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool chunk_result = 11 [default = false];</code>
       * @return This builder for chaining.
       */
      public Builder clearChunkResult() {
        bitField0_ = (bitField0_ & ~0x00000800);
        chunkResult_ = false;
        onChanged();
        return this;
      }

      private boolean feedBack_ ;
      /**
       * <code>optional bool feed_back = 13 [default = false];</code>
       * @return Whether the feedBack field is set.
       */
      public boolean hasFeedBack() {
        return ((bitField0_ & 0x00001000) != 0);
      }
      /**
       * <code>optional bool feed_back = 13 [default = false];</code>
       * @return The feedBack.
       */
      public boolean getFeedBack() {
        return feedBack_;
      }
      /**
       * <code>optional bool feed_back = 13 [default = false];</code>
       * @param value The feedBack to set.
       * @return This builder for chaining.
       */
      public Builder setFeedBack(boolean value) {
        bitField0_ |= 0x00001000;
        feedBack_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool feed_back = 13 [default = false];</code>
       * @return This builder for chaining.
       */
      public Builder clearFeedBack() {
        bitField0_ = (bitField0_ & ~0x00001000);
        feedBack_ = false;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:Polarx.ExecPlan.ExecPlan)
    }

    // @@protoc_insertion_point(class_scope:Polarx.ExecPlan.ExecPlan)
    private static final com.mysql.cj.x.protobuf.PolarxExecPlan.ExecPlan DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.mysql.cj.x.protobuf.PolarxExecPlan.ExecPlan();
    }

    public static com.mysql.cj.x.protobuf.PolarxExecPlan.ExecPlan getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<ExecPlan>
        PARSER = new com.google.protobuf.AbstractParser<ExecPlan>() {
      @java.lang.Override
      public ExecPlan parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ExecPlan(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<ExecPlan> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ExecPlan> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.mysql.cj.x.protobuf.PolarxExecPlan.ExecPlan getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Polarx_ExecPlan_NewSession_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Polarx_ExecPlan_NewSession_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Polarx_ExecPlan_CloseSession_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Polarx_ExecPlan_CloseSession_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Polarx_ExecPlan_EnumSession_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Polarx_ExecPlan_EnumSession_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Polarx_ExecPlan_SessionInfo_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Polarx_ExecPlan_SessionInfo_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Polarx_ExecPlan_SessionInfos_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Polarx_ExecPlan_SessionInfos_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Polarx_ExecPlan_TableInfo_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Polarx_ExecPlan_TableInfo_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Polarx_ExecPlan_IndexInfo_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Polarx_ExecPlan_IndexInfo_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Polarx_ExecPlan_Transaction_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Polarx_ExecPlan_Transaction_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Polarx_ExecPlan_BloomFilter_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Polarx_ExecPlan_BloomFilter_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Polarx_ExecPlan_GetTSO_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Polarx_ExecPlan_GetTSO_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Polarx_ExecPlan_ResultTSO_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Polarx_ExecPlan_ResultTSO_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Polarx_ExecPlan_KeyExpr_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Polarx_ExecPlan_KeyExpr_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Polarx_ExecPlan_GetExpr_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Polarx_ExecPlan_GetExpr_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Polarx_ExecPlan_GetPlan_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Polarx_ExecPlan_GetPlan_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Polarx_ExecPlan_TableScanPlan_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Polarx_ExecPlan_TableScanPlan_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Polarx_ExecPlan_KeyOnlyRangeScan_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Polarx_ExecPlan_KeyOnlyRangeScan_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Polarx_ExecPlan_RangeScan_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Polarx_ExecPlan_RangeScan_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Polarx_ExecPlan_TableProject_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Polarx_ExecPlan_TableProject_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Polarx_ExecPlan_Project_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Polarx_ExecPlan_Project_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Polarx_ExecPlan_Filter_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Polarx_ExecPlan_Filter_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Polarx_ExecPlan_Aggr_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Polarx_ExecPlan_Aggr_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Polarx_ExecPlan_AnyPlan_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Polarx_ExecPlan_AnyPlan_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_Polarx_ExecPlan_ExecPlan_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_Polarx_ExecPlan_ExecPlan_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }

    private static final com.google.protobuf.Descriptors.FileDescriptor
        descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n\026polarx_exec_plan.proto\022\017Polarx.ExecPla" +
      "n\032\014polarx.proto\032\021polarx_expr.proto\032\026pola" +
      "rx_datatypes.proto\"\014\n\nNewSession\"\016\n\014Clos" +
      "eSession\"\r\n\013EnumSession\"\r\n\013SessionInfo\">" +
      "\n\014SessionInfos\022.\n\010sessions\030\001 \003(\0132\034.Polar" +
          "x.ExecPlan.SessionInfo\"s\n\tTableInfo\022\017\n\007v" +
          "ersion\030\001 \001(\003\022&\n\004name\030\002 \002(\0132\030.Polarx.Data" +
          "types.Scalar\022-\n\013schema_name\030\003 \001(\0132\030.Pola" +
          "rx.Datatypes.Scalar\"F\n\tIndexInfo\022&\n\004name" +
          "\030\001 \002(\0132\030.Polarx.Datatypes.Scalar\022\021\n\tuse_" +
          "parts\030\002 \001(\005\"\r\n\013Transaction\"V\n\013BloomFilte" +
          "r\022\022\n\ntotal_bits\030\001 \002(\r\022\023\n\013number_hash\030\002 \002" +
          "(\r\022\020\n\010strategy\030\003 \002(\014\022\014\n\004data\030\004 \002(\014\"2\n\006Ge" +
          "tTSO\022\023\n\013leader_name\030\001 \002(\014\022\023\n\013batch_count" +
          "\030\002 \002(\005\")\n\tResultTSO\022\020\n\010error_no\030\001 \002(\005\022\n\n" +
          "\002ts\030\002 \002(\004\"[\n\007KeyExpr\022'\n\005field\030\001 \002(\0132\030.Po" +
          "larx.Datatypes.Scalar\022'\n\005value\030\002 \002(\0132\030.P" +
          "olarx.Datatypes.Scalar\"1\n\007GetExpr\022&\n\004key" +
          "s\030\001 \003(\0132\030.Polarx.ExecPlan.KeyExpr\"\221\001\n\007Ge" +
          "tPlan\022.\n\ntable_info\030\001 \002(\0132\032.Polarx.ExecP" +
          "lan.TableInfo\022.\n\nindex_info\030\002 \001(\0132\032.Pola" +
          "rx.ExecPlan.IndexInfo\022&\n\004keys\030\003 \003(\0132\030.Po" +
          "larx.ExecPlan.GetExpr\"\200\001\n\rTableScanPlan\022" +
          ".\n\ntable_info\030\001 \002(\0132\032.Polarx.ExecPlan.Ta" +
          "bleInfo\022.\n\nindex_info\030\002 \001(\0132\032.Polarx.Exe" +
          "cPlan.IndexInfo\022\017\n\007reverse\030\003 \001(\010\"\223\002\n\020Key" +
          "OnlyRangeScan\022.\n\010snapshot\030\001 \001(\0132\034.Polarx" +
      ".ExecPlan.Transaction\022.\n\ntable_info\030\003 \001(" +
      "\0132\032.Polarx.ExecPlan.TableInfo\022.\n\nindex_i" +
      "nfo\030\004 \001(\0132\032.Polarx.ExecPlan.IndexInfo\022%\n" +
      "\003key\030\005 \001(\0132\030.Polarx.ExecPlan.GetExpr\022)\n\007" +
      "end_key\030\006 \001(\0132\030.Polarx.ExecPlan.GetExpr\022" +
      "\017\n\007reverse\030\010 \001(\010\022\014\n\004flag\030\t \001(\003\"\214\002\n\tRange" +
      "Scan\022.\n\010snapshot\030\001 \001(\0132\034.Polarx.ExecPlan" +
      ".Transaction\022.\n\ntable_info\030\003 \001(\0132\032.Polar" +
      "x.ExecPlan.TableInfo\022.\n\nindex_info\030\004 \001(\013" +
      "2\032.Polarx.ExecPlan.IndexInfo\022%\n\003key\030\005 \001(" +
      "\0132\030.Polarx.ExecPlan.GetExpr\022)\n\007end_key\030\006" +
      " \001(\0132\030.Polarx.ExecPlan.GetExpr\022\017\n\007revers" +
      "e\030\010 \001(\010\022\014\n\004flag\030\t \001(\003\"i\n\014TableProject\022/\n" +
          "\rsub_read_plan\030\001 \002(\0132\030.Polarx.ExecPlan.A" +
          "nyPlan\022(\n\006fields\030\002 \003(\0132\030.Polarx.Datatype" +
          "s.Scalar\"\206\001\n\007Project\022/\n\rsub_read_plan\030\001 " +
          "\002(\0132\030.Polarx.ExecPlan.AnyPlan\022(\n\006fields\030" +
          "\002 \003(\0132\030.Polarx.Datatypes.Scalar\022 \n\005exprs" +
          "\030\003 \003(\0132\021.Polarx.Expr.Expr\"Z\n\006Filter\022/\n\rs" +
          "ub_read_plan\030\001 \002(\0132\030.Polarx.ExecPlan.Any" +
          "Plan\022\037\n\004expr\030\002 \002(\0132\021.Polarx.Expr.Expr\"\313\002" +
          "\n\004Aggr\022/\n\rsub_read_plan\030\001 \002(\0132\030.Polarx.E" +
          "xecPlan.AnyPlan\022,\n\004type\030\002 \002(\0162\036.Polarx.E" +
          "xecPlan.Aggr.AggrType\022'\n\005field\030\003 \002(\0132\030.P" +
          "olarx.Datatypes.Scalar\022\037\n\004expr\030\004 \002(\0132\021.P" +
          "olarx.Expr.Expr\"\231\001\n\010AggrType\022\016\n\nCOUNT_FU" +
          "NC\020\001\022\027\n\023COUNT_DISTINCT_FUNC\020\002\022\014\n\010SUM_FUN" +
          "C\020\003\022\025\n\021SUM_DISTINCT_FUNC\020\004\022\014\n\010AVG_FUNC\020\005" +
          "\022\025\n\021AVG_DISTINCT_FUNC\020\006\022\014\n\010MIN_FUNC\020\007\022\014\n" +
          "\010MAX_FUNC\020\010\"\356\003\n\007AnyPlan\0224\n\tplan_type\030\001 \002" +
          "(\0162!.Polarx.ExecPlan.AnyPlan.PlanType\022*\n" +
          "\010get_plan\030\002 \001(\0132\030.Polarx.ExecPlan.GetPla" +
          "n\0227\n\017table_scan_plan\030\003 \001(\0132\036.Polarx.Exec" +
          "Plan.TableScanPlan\0224\n\rtable_project\030\004 \001(" +
          "\0132\035.Polarx.ExecPlan.TableProject\022)\n\007proj" +
          "ect\030\005 \001(\0132\030.Polarx.ExecPlan.Project\022'\n\006f" +
          "ilter\030\006 \001(\0132\027.Polarx.ExecPlan.Filter\022.\n\n" +
          "range_scan\030\010 \001(\0132\032.Polarx.ExecPlan.Range" +
          "Scan\022#\n\004aggr\030\t \001(\0132\025.Polarx.ExecPlan.Agg" +
          "r\"i\n\010PlanType\022\007\n\003GET\020\001\022\016\n\nTABLE_SCAN\020\002\022\021" +
          "\n\rTABLE_PROJECT\020\003\022\013\n\007PROJECT\020\004\022\n\n\006FILTER" +
          "\020\005\022\016\n\nRANGE_SCAN\020\010\022\010\n\004AGGR\020\t\"\251\003\n\010ExecPla" +
          "n\0221\n\013transaction\030\001 \001(\0132\034.Polarx.ExecPlan" +
          ".Transaction\022&\n\004plan\030\002 \001(\0132\030.Polarx.Exec" +
          "Plan.AnyPlan\022\023\n\013plan_digest\030\003 \001(\014\022,\n\npar" +
          "ameters\030\004 \003(\0132\030.Polarx.Datatypes.Scalar\022" +
      "<\n\021session_variables\030\005 \003(\0132!.Polarx.Data" +
      "types.SessionVariable\022\r\n\005token\030\006 \001(\005\022\023\n\013" +
      "reset_error\030\007 \001(\010\022\037\n\020compact_metadata\030\010 " +
      "\001(\010:\005false\022\024\n\014snapshot_seq\030\t \001(\004\022\022\n\ncomm" +
      "it_seq\030\n \001(\004\022\033\n\023use_cts_transaction\030\014 \001(" +
      "\010\022\033\n\014chunk_result\030\013 \001(\010:\005false\022\030\n\tfeed_b" +
      "ack\030\r \001(\010:\005falseB\031\n\027com.mysql.cj.x.proto" +
      "buf"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          com.mysql.cj.x.protobuf.Polarx.getDescriptor(),
          com.mysql.cj.x.protobuf.PolarxExpr.getDescriptor(),
          com.mysql.cj.x.protobuf.PolarxDatatypes.getDescriptor(),
        });
    internal_static_Polarx_ExecPlan_NewSession_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_Polarx_ExecPlan_NewSession_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Polarx_ExecPlan_NewSession_descriptor,
        new java.lang.String[] { });
    internal_static_Polarx_ExecPlan_CloseSession_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_Polarx_ExecPlan_CloseSession_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Polarx_ExecPlan_CloseSession_descriptor,
        new java.lang.String[] { });
    internal_static_Polarx_ExecPlan_EnumSession_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_Polarx_ExecPlan_EnumSession_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Polarx_ExecPlan_EnumSession_descriptor,
        new java.lang.String[] { });
    internal_static_Polarx_ExecPlan_SessionInfo_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_Polarx_ExecPlan_SessionInfo_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Polarx_ExecPlan_SessionInfo_descriptor,
        new java.lang.String[] { });
    internal_static_Polarx_ExecPlan_SessionInfos_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_Polarx_ExecPlan_SessionInfos_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Polarx_ExecPlan_SessionInfos_descriptor,
        new java.lang.String[] { "Sessions", });
    internal_static_Polarx_ExecPlan_TableInfo_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_Polarx_ExecPlan_TableInfo_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Polarx_ExecPlan_TableInfo_descriptor,
        new java.lang.String[] { "Version", "Name", "SchemaName", });
    internal_static_Polarx_ExecPlan_IndexInfo_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_Polarx_ExecPlan_IndexInfo_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Polarx_ExecPlan_IndexInfo_descriptor,
        new java.lang.String[] { "Name", "UseParts", });
    internal_static_Polarx_ExecPlan_Transaction_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_Polarx_ExecPlan_Transaction_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Polarx_ExecPlan_Transaction_descriptor,
        new java.lang.String[] { });
    internal_static_Polarx_ExecPlan_BloomFilter_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_Polarx_ExecPlan_BloomFilter_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Polarx_ExecPlan_BloomFilter_descriptor,
        new java.lang.String[] { "TotalBits", "NumberHash", "Strategy", "Data", });
    internal_static_Polarx_ExecPlan_GetTSO_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_Polarx_ExecPlan_GetTSO_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Polarx_ExecPlan_GetTSO_descriptor,
        new java.lang.String[] { "LeaderName", "BatchCount", });
    internal_static_Polarx_ExecPlan_ResultTSO_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_Polarx_ExecPlan_ResultTSO_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Polarx_ExecPlan_ResultTSO_descriptor,
        new java.lang.String[] { "ErrorNo", "Ts", });
    internal_static_Polarx_ExecPlan_KeyExpr_descriptor =
      getDescriptor().getMessageTypes().get(11);
    internal_static_Polarx_ExecPlan_KeyExpr_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Polarx_ExecPlan_KeyExpr_descriptor,
        new java.lang.String[] { "Field", "Value", });
    internal_static_Polarx_ExecPlan_GetExpr_descriptor =
      getDescriptor().getMessageTypes().get(12);
    internal_static_Polarx_ExecPlan_GetExpr_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Polarx_ExecPlan_GetExpr_descriptor,
        new java.lang.String[] { "Keys", });
    internal_static_Polarx_ExecPlan_GetPlan_descriptor =
      getDescriptor().getMessageTypes().get(13);
    internal_static_Polarx_ExecPlan_GetPlan_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Polarx_ExecPlan_GetPlan_descriptor,
        new java.lang.String[] { "TableInfo", "IndexInfo", "Keys", });
    internal_static_Polarx_ExecPlan_TableScanPlan_descriptor =
      getDescriptor().getMessageTypes().get(14);
    internal_static_Polarx_ExecPlan_TableScanPlan_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Polarx_ExecPlan_TableScanPlan_descriptor,
        new java.lang.String[] { "TableInfo", "IndexInfo", "Reverse", });
    internal_static_Polarx_ExecPlan_KeyOnlyRangeScan_descriptor =
      getDescriptor().getMessageTypes().get(15);
    internal_static_Polarx_ExecPlan_KeyOnlyRangeScan_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Polarx_ExecPlan_KeyOnlyRangeScan_descriptor,
        new java.lang.String[] { "Snapshot", "TableInfo", "IndexInfo", "Key", "EndKey", "Reverse", "Flag", });
    internal_static_Polarx_ExecPlan_RangeScan_descriptor =
      getDescriptor().getMessageTypes().get(16);
    internal_static_Polarx_ExecPlan_RangeScan_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Polarx_ExecPlan_RangeScan_descriptor,
        new java.lang.String[] { "Snapshot", "TableInfo", "IndexInfo", "Key", "EndKey", "Reverse", "Flag", });
    internal_static_Polarx_ExecPlan_TableProject_descriptor =
      getDescriptor().getMessageTypes().get(17);
    internal_static_Polarx_ExecPlan_TableProject_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Polarx_ExecPlan_TableProject_descriptor,
        new java.lang.String[] { "SubReadPlan", "Fields", });
    internal_static_Polarx_ExecPlan_Project_descriptor =
      getDescriptor().getMessageTypes().get(18);
    internal_static_Polarx_ExecPlan_Project_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Polarx_ExecPlan_Project_descriptor,
        new java.lang.String[] { "SubReadPlan", "Fields", "Exprs", });
    internal_static_Polarx_ExecPlan_Filter_descriptor =
      getDescriptor().getMessageTypes().get(19);
    internal_static_Polarx_ExecPlan_Filter_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Polarx_ExecPlan_Filter_descriptor,
        new java.lang.String[] { "SubReadPlan", "Expr", });
    internal_static_Polarx_ExecPlan_Aggr_descriptor =
      getDescriptor().getMessageTypes().get(20);
    internal_static_Polarx_ExecPlan_Aggr_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Polarx_ExecPlan_Aggr_descriptor,
        new java.lang.String[] { "SubReadPlan", "Type", "Field", "Expr", });
    internal_static_Polarx_ExecPlan_AnyPlan_descriptor =
      getDescriptor().getMessageTypes().get(21);
    internal_static_Polarx_ExecPlan_AnyPlan_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Polarx_ExecPlan_AnyPlan_descriptor,
        new java.lang.String[] { "PlanType", "GetPlan", "TableScanPlan", "TableProject", "Project", "Filter", "RangeScan", "Aggr", });
    internal_static_Polarx_ExecPlan_ExecPlan_descriptor =
      getDescriptor().getMessageTypes().get(22);
    internal_static_Polarx_ExecPlan_ExecPlan_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_Polarx_ExecPlan_ExecPlan_descriptor,
        new java.lang.String[] { "Transaction", "Plan", "PlanDigest", "Parameters", "SessionVariables", "Token", "ResetError", "CompactMetadata", "SnapshotSeq", "CommitSeq", "UseCtsTransaction", "ChunkResult", "FeedBack", });
    com.mysql.cj.x.protobuf.Polarx.getDescriptor();
    com.mysql.cj.x.protobuf.PolarxExpr.getDescriptor();
    com.mysql.cj.x.protobuf.PolarxDatatypes.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
